Grails 如何在执行Geb测试之前登录
我有基于Grails的RESTWebService。在您可以访问除登录之外的任何页面之前,都有强制身份验证。 我使用Geb&Spock进行集成测试,在Gradle中运行。我的问题是:如何在执行任何测试之前提供身份验证? 我有两个想法:Grails 如何在执行Geb测试之前登录,grails,groovy,spock,geb,Grails,Groovy,Spock,Geb,我有基于Grails的RESTWebService。在您可以访问除登录之外的任何页面之前,都有强制身份验证。 我使用Geb&Spock进行集成测试,在Gradle中运行。我的问题是:如何在执行任何测试之前提供身份验证? 我有两个想法: 按顺序运行测试(先登录,然后运行其他测试)。怎么用?(必须通过命令gradle integrationTest触发) 在每次验证我的测试之前执行JS脚本。如何在测试中实现这一点 如果它是一个web服务,我不会使用Geb来测试它。Geb是一种驱动浏览器的工具,RES
gradle integrationTest
触发)什么样的认证? 有关基本身份验证,请查看: 因此,您可以将其添加到您的基本url 如果必须完成登录过程,可以使用
setupSpec()
和setup
方法。前者在其他任何事情发生之前执行,后者在每个单独的测试方法之前执行
您可以使用@Stepwise符号来阻止在测试方法之间删除cookie。
如果您有不同的geb类,并且希望所有这些类都在setup或setupSpec方法的前面,请使用extends表示法:
class BaseClass extends GebSpec {
def setupSpec() {
<loginProcess>
}
}
@Stepwise
class ASpec extends BaseClass {
testMethod() { }
}
@Stepwise
class BSpec extends BaseClass {
testMethod() { }
}
class基类扩展了GebSpec{
def setupSpec(){
}
}
@逐步的
类ASpec扩展了基类{
testMethod(){}
}
@逐步的
类BSpec扩展了基类{
testMethod(){}
}
注意,这将额外执行一次登录过程,因为它也发生在基类中。
我使用了一个
if(this.getClass().getPackage().getName()!=“gebMethods”)
块解决了这个问题,但我想可能有一个更优雅的解决方案。什么样的身份验证?
有关基本身份验证,请查看:
因此,您可以将其添加到您的基本url
如果必须完成登录过程,可以使用setupSpec()
和setup
方法。前者在其他任何事情发生之前执行,后者在每个单独的测试方法之前执行
您可以使用@Stepwise符号来阻止在测试方法之间删除cookie。
如果您有不同的geb类,并且希望所有这些类都在setup或setupSpec方法的前面,请使用extends表示法:
class BaseClass extends GebSpec {
def setupSpec() {
<loginProcess>
}
}
@Stepwise
class ASpec extends BaseClass {
testMethod() { }
}
@Stepwise
class BSpec extends BaseClass {
testMethod() { }
}
class基类扩展了GebSpec{
def setupSpec(){
}
}
@逐步的
类ASpec扩展了基类{
testMethod(){}
}
@逐步的
类BSpec扩展了基类{
testMethod(){}
}
注意,这将额外执行一次登录过程,因为它也发生在基类中。
我使用了一个if(this.getClass().getPackage().getName()!=“gebMethods”)
块解决了这个问题,但我想可能有一个更优雅的解决方案