我正在使用Grails 2.3.8,最近我开始修复一些过时的测试,这些测试在过去的几个Grails 2.3.x版本中停止工作。
在Spock控制器测试期间,以及从Controller响应域实例时,针对模型的断言将失败/通过,具体取决于测试执行环境。具体来说,在使用Grails控制台与IntelliJ(Junit)执行测试时,模型上的域实例具有不同的属性名称。
我一直在通过在我的Spock规范中的然后或期望块中进行此类断言来对冲它:
void "show action correctly handles a valid instance"() {
given: "a valid domain instance"
def myDomainObject = MyDomainClass.build()
when: "calling the show action with a valid domain instance"
controller.show(myDomainObject)
then: "respond to the show view with the domain instance set on the model"
view == ‘show’
// the property name ends with ‘Instance’ in one env and not in the other
model.myDomainObjectInstance ?: model.myDomainObject == myDomainObject
}
答案 0 :(得分:0)
不确定这是否有问题,但我认为您应该在变量中保存控制器的响应,并使用renderArgs变量访问视图:
void“show action正确处理有效的实例”(){
given: "a valid domain instance"
def myDomainObject = MyDomainClass.build()
when: "calling the show action with a valid domain instance"
def model = controller.show(myDomainObject)
then: "respond to the show view with the domain instance set on the model"
renderArgs.view == ‘show’
// the property name ends with ‘Instance’ in one env and not in the other
model.myDomainObjectInstance ?: model.myDomainObject == myDomainObject
}
不确定这是不是问题。