Интеграционный тест 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 сообщение об ошибке появляется с новым тестом.

Другие вопросы по тегам