当前位置: 首页 > 知识库问答 >
问题:

使用spock的集成测试

管和志
2023-03-14

在我的应用程序中有AddressBookController,它有一个edit联系人操作,如下所示:

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
 }
}

但是我的测试用例失败了,stacktrace如下:

正在运行2个spock测试。。。第1页,共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 ....

有什么问题吗。

共有1个答案

盖锐
2023-03-14

试试这个。。,。

AddressBookController controller = new AddressBookController()

def "editContact action renders view with addressBook details"() {
  when:
    controller.params.addressBookId = 1   //valid id 
    controller.editContact()
  then:
    assert controller.modelAndView.model.addressBook
    assert controller.modelAndView.modelMap.addressBook
    assert controller.modelAndView.viewName == "/addressBook/addContact"
}
 类似资料:
  • 下面是我的应用程序主类: 但当我运行这个程序时,我得到了一个非常奇怪的错误: groovyx.net.http.restclient:解析'application/json'响应时出错

  • 问题内容: 我使用spock编写测试用例,使用jenkins运行和发布我的测试用例。我能够得到报告的代码覆盖率,但是声纳 仅 向我显示 Java 单元测试用例;在 常规测试案例是完全缺失 以下pom.xml用作参考 https://github.com/kkapelon/java-testing-with- spock/blob/master/chapter7/spring-standalone-

  • 完成了818个集成测试,0在104001ms运行1个spock测试时失败...失败:CreditServiceSpec groovy.lang.groovyRuntimeException:未能调用构造函数:public org.codehaus.groovy.grails.test.support.grailstestautoWirer(org.springframework.context.a

  • 使用Spock运行集成测试(例如)的最佳方式是什么?我想引导整个Spring Boot应用程序,并执行一些HTTP调用来测试整个功能。 我可以用JUnit(首先运行应用程序,然后执行测试): 但是有了Spock,应用程序就不会启动了:

  • 您可以在下面找到整个应用程序:https://github.com/ahlinist/raspberry-pi4j/tree/feature/integration-tests 我试图实现以下描述的结果:https://github.com/spockframework/spock/blob/master/spock-spring/boot-test/src/test/groovy/org/spo