2013-10-02 4 views
0

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

Но моя тест-тест потерпит неудачу с помощью stacktrace как:

Выполнение 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 .... 

В чем может быть проблема.

+0

Можете ли вы визуализировать представление с данными модели, когда вы нажимаете действие в браузере после 'run-app'? – dmahapatro

+0

Да, мое редактируемое представление рендеринга с моделью правильно. – Abs

+0

Я использую grails 2.2.0, я тестировал новое приложение, но это дает тот же результат. Я думаю, что modelAndView не получает экземпляр рамки. – Abs

ответ

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" 
} 
Смежные вопросы