Тестирование моего контроллера с помощью Спока
Мне нужно проверить контроллер, действий index
(генерируется Граалем generate-all
команда). У меня есть такой тест (в Споке):
package mnm.schedule
import grails.test.mixin.*
import org.junit.*
import grails.plugin.spock.*
import spock.lang.Specification
import org.example.*;
class UserControllerSpec extends ControllerSpec {
def "test"() {
setup:
mockLogging(UserController, true)
when:
controller.index()
then:
redirectArgs.action == "list"
}
}
Я получаю ошибку, как это:
Error Error running script test-app :spock : cannot find shared instance field (Use --stacktrace to see the full trace)
Через некоторое время я могу запустить тест, тест становится пройденным.
Что на самом деле идет не так? Почему в первый раз показывает эту ошибку? Я новичок в среде Спока.
Заранее спасибо.
1 ответ
Решение
Учитывая, что вы используете Grails 2.xx, вы должны использовать аннотацию @TestFor, которая расширяет классы фреймворка модульного тестирования с помощью миксинов.
В вашем случае вы должны добавить @TestFor(UserController)
в качестве аннотации на уровне класса, так что вы можете использовать mockLogging
метод.