我有一个这样的控制器:
class NotificationApiController {
def countService
def getCount() {
def results = countService.getCount()
render results as JSON
}
}
控制器测试如下:
Closure doWithSpring() {{ ->
countService(CountService)
}}
CountService countService
def setup() {
}
def cleanup() {
}
void "test getCount method"() {
given:
def countService = Mock(CountService) {
1 * getCount(_) >> [count: 2]
}
when:
def y = controller.getCount()
then:
y == [count: 2]
}
看来它总是调用在 Closure doWithSpring() 中注入的实际 CountService,而不是我的模拟 countService,但没有 Closure doWithSpring() 的定义...,我会收到此错误
Cannot invoke method getCount() on null object
java.lang.NullPointerException: Cannot invoke method getCount() on null object
4.0 中的单元测试文档非常有限,我不确定我应该如何做。我在 Grails 2.3 或 3.3 中看到了一些示例。版本,但它们似乎都不适合我,主要是由于我猜 Spock 和 Mixin 框架的差异。关于如何做到这一点的任何建议?