Модульный тест не пройден в Intellij 13, но проходит через командную строку

У меня есть очень простой модульный тест, который проверяет действие контроллера, которое отображает текущего пользователя как JSON. Вот мой тестовый класс:

@TestFor(UserController)
class UserControllerSpec extends Specification {

    def setup() {
        def springSecurityService = mockFor(SpringSecurityService)
        springSecurityService.demand.getCurrentUser { -> [name: "Jim"] }
        controller.springSecurityService = springSecurityService.createMock()
    }

    def cleanup() {
    }

    void "test current"() {
        when:
        request.method = 'GET'
        controller.current()

        then:
        response.json.name == "Jim"
    }
}

Вот контроллер (опущен не связанный код)

def springSecurityService

static responseFormats = ['json']

static allowedMethods = [current: "GET"]

def current() {
    respond(springSecurityService.currentUser)
}

Я выполняю этот тест в одиночку через grails test -unit package.class и это работает через командную строку:

|Running 1 unit test... 1 of 1
|Completed 1 unit test, 0 failed in 0m 11s
.
|Tests PASSED - view reports in ...\target\test-reports

Это не работает через IntelliJ, потому что springSecurityService.currentUser всегда ноль. Вот результирующее исключение:

org.codehaus.groovy.grails.web.converters.exceptions.ConverterException: Error parsing JSON
    at grails.converters.JSON.parse(JSON.java:292)
    at org.codehaus.groovy.grails.plugins.testing.AbstractGrailsMockHttpServletResponse.getJson(AbstractGrailsMockHttpServletResponse.groovy:97)
    at massemailsystem.UserControllerSpec.test current(UserControllerSpec.groovy:28)
Caused by: org.codehaus.groovy.grails.web.json.JSONException: Missing value. at character 0 of 
    at org.codehaus.groovy.grails.web.json.JSONTokener.syntaxError(JSONTokener.java:470)
    at org.codehaus.groovy.grails.web.json.JSONTokener.nextValue(JSONTokener.java:357)
    at grails.converters.JSON.parse(JSON.java:283)
    ... 2 more

Есть идеи?

1 ответ

Вам нужно запустить этот тестовый пример как тестовый пример Grails в IntelliJ.

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