【发布时间】:2013-10-02 09:44:14
【问题描述】:
在我的应用程序中有AddressBookController,它有一个editContact 操作,如下所示:
def editContact(){
AddressBook addressBook=AddressBook.findById(params.addressBookId)
render view: 'addContact', model: [addressBook:addressBook]
}
现在我正在尝试测试视图和模型:
class AddressBookControllerSpec extends IntegrationSpec{
AddressBookController addressBookController = new AddressBookController()
void setup() {
}
def "editContact action renders view with addressBook details"() {
when:
addressBookController.editContact()
then:
addressBookController.modelAndView.model.addressBook
}
void cleaup() {
// Tear down logic here
}
}
但我的测试用例失败,堆栈跟踪如下:
运行 2 个 spock 测试... 1 of 2
| Failure: editContact action renders view with addressBook details(cvsurgeon.AddressBookControllerSpec)
| java.lang.NullPointerException: Cannot get property 'model' on null object
at cvsurgeon.AddressBookControllerSpec.setup(AddressBookControllerSpec.groovy:15)
| Completed 2 spock tests, 1 failed in 660ms
| Tests FAILED - view reports in ....
可能是什么问题。
【问题讨论】:
-
在
run-app之后点击浏览器中的操作时,您是否能够使用模型数据渲染视图? -
是的,我的编辑视图正在正确地使用模型渲染。
-
我正在使用 grails 2.2.0,我已经测试了新应用程序仍然给出了相同的结果。我认为 modelAndView 没有被框架实例化。
标签: grails integration-testing spock