【发布时间】:2015-01-07 21:14:29
【问题描述】:
您好,我有一个名为 ApiController 的控制器,它使用一个名为 ApiService 的服务,如下所示:
def createCategory(){
def jsonObj = request.JSON
jsonObj.each{ key, value ->
params.put(key,value)
}
render apiService.createCategory(params)
}
效果很好。 但我似乎无法为它编写测试。
这是我已经走了多远:
@TestFor(ApiController)
@Mock([Category,ApiService])
class CategorySpec extends Specification {
def setup() {
}
def cleanup() {
}
void "test"() {
setup:
def apiService = Mock(ApiService)
when:
request.method = 'POST'
request.requestMethod = 'POST'
params.categoryID = 'test'
controller.createCategory()
then:
println(response)
1==1
}
从这里我得到以下错误:
java.lang.NullPointerException: Cannot invoke method createCategory() on null object
这显然是因为它看不到我的 apiService bean。所以我的问题是我如何在 Spock 中做到这一点?
【问题讨论】:
-
包含 createCategory() 的控制器看起来如何...或给出该控制器的详细结构。
标签: unit-testing grails spock