Интеграционный тест Grails 2.3 ведет себя плохо - ServletContext не должен иметь значение null
Я видел несколько постов о проблемах с Grails 2.3.x и интеграционным тестированием, но пока что ничто не помогло в моей ситуации, так что вот так:
Я хочу протестировать свои сервисы Grails на реальной действующей базе данных (Oracle), поэтому я написал несколько интеграционных тестов на Spock. Независимо от того, какой из рекомендованных подходов я пробую, я получаю одну и ту же ошибку. Я надеюсь, что это что-то простое и глупое, но я боюсь, что есть проблема, которая должна быть решена командой Grails.
Вот код, должным образом очищенный, чтобы удалить любой намек на то, где я работаю:
package com.mycompany
import grails.test.spock.IntegrationSpec
import spock.lang.*
import com.mycompany.User
class UserServiceSpec extends IntegrationSpec {
UserService userService
def setup() {
}
def cleanup() {
}
void "find a user by their id"() {
when:
User user = userService.find('1234')
then:
user.firstName == 'Brian'
}
}
Из всего, что я там прочитал, это то, как вы делаете это с Grails 2.3 и выше. Я последовательно получаю следующую ошибку
java.lang.IllegalArgumentException: ServletContext must not be null
Любая помощь всегда ценится.
Брайан
2 ответа
Одна вещь, которая может вызвать эту проблему, если ваш UserServiceSpec
определяется под test/unit/
вместо test/integration
где это должно быть.
Я столкнулся с этой проблемой, когда добавил новый интеграционный тест в свой пакет. Я продлил IntegrationSpec
в этом случае, как это должно быть сделано с интеграционными тестами.
К сожалению, другие тесты в области интеграции были выполнены неправильно с помощью @Mock
а также @TestFor
аннотации, предназначенные только для юнит-тестов. Исправление других тестов, устранение проблемы ServletContext must not be null
сообщение об ошибке появляется с новым тестом.