Grails 2.3集成测试表现不佳 - ServletContext不能为null

时间:2014-08-15 13:16:06

标签: integration-testing spock grails-2.3 grails-services

我已经看过一些关于Grails 2.3.x和集成测试问题的帖子,但是没有任何帮助我的情况,所以这里有:

我想针对真实的实时数据库(Oracle)测试我的Grails服务,因此我在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 个答案:

答案 0 :(得分:2)

可能导致该问题的一件事是,UserServiceSpec是在test/unit/而不是test/integration下定义的。

答案 1 :(得分:0)

当我向我的套件添加新的集成测试时,我遇到了这个问题。在这种情况下我扩展了IntegrationSpec,应该使用集成测试。

不幸的是,使用@Mock@TestFor注释错误地完成了对集成范围的其他测试,这些注释仅适用于单元测试。修复其他测试,删除了新测试中出现ServletContext must not be null错误消息的问题。