Интеграционное тестирование с использованием спока

В моем приложении есть 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 тестов спока... 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 ответ

Решение

Попробуй это..,.

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"
}
Другие вопросы по тегам