Grails控制器单元测试通过命令行而不是Intellij

时间:2014-07-02 17:37:51

标签: grails groovy junit intellij-idea spock

我正在使用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
}

1 个答案:

答案 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

}

不确定这是不是问题。