我已经看过一些关于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
任何帮助总是受到赞赏。
布赖恩
答案 0 :(得分:2)
可能导致该问题的一件事是,UserServiceSpec
是在test/unit/
而不是test/integration
下定义的。
答案 1 :(得分:0)
当我向我的套件添加新的集成测试时,我遇到了这个问题。在这种情况下我扩展了IntegrationSpec
,应该使用集成测试。
不幸的是,使用@Mock
和@TestFor
注释错误地完成了对集成范围的其他测试,这些注释仅适用于单元测试。修复其他测试,删除了新测试中出现ServletContext must not be null
错误消息的问题。