我一直有与测试我的Grails应用程序的身份验证问题。看来,浏览器将不接受cookie,所以我创建了一个简单Grails应用程序作为测试

<html>
<head>
    <title>Welcome to Grails</title>
</head>
<body>
    <g:each in="${request.cookies}">
       <h1>${it.name} = <span class="value">${it.value}</span></h1>
    </g:each>

    <span class="value">test test</span>
</body>

和我的盖布试验:

import spock.lang.Stepwise;
import geb.Page;
import geb.spock.GebReportingSpec


@Stepwise
class LoginSmokeTests extends GebReportingSpec {
 String getBaseUrl() {
  return "http://localhost:8080/test123/"
 } 

 def "testing stuff"() {
  given:
   to HomePage
  when:
   println header

  then: 
   at HomePage
 }  
}



class HomePage extends Page {
 static at = { title == "Welcome to Grails" }

 static content = {
  header { $("span.value").first().text() }
 }
}

当我观看此通过浏览器,2块饼干值被印刷。当通过我的盖布试验,访问它时<span class="value">test test</span> HTML拾取 - 因为有在请求遍历没有饼干。

我已经做了关于如何使用盖布+饼干一些搜索,但因为它是相对较新的软件,也似乎没有太多的信息在那里(虽然它的手册是伟大的)。

  

针对每个测试方法创建一个新的浏览器实例然而,由于默认行为是重新使用跨浏览器实例的驾驶员的Cookie通常是在斯波克清理()方法清除了默认驱动程序。但是,如果你的规范是逐步的(即标注有@ spock.lang.Stepwise - 详见斯波克文档)的饼干在清理未清除(),但在cleanupSpec(),这意味着浏览器状态不是测试之间复位清零方法(这是有道理的,逐步的规格)。

和,我只执行一个测试方法 - 但没有cookie被发送。任何想法?

有帮助吗?

解决方案

由于这是您的第一个请求时,浏览器将不会有任何cookie,因为服务器没有发送任何。

如果你做一个后续请求你应该看到的cookie。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top