我正在使用Grails 2.2.0。 这是我要测试的方法:
def extendedSearchIndex () {
log.debug("ExtendedSearchIndex ... ");
def deviceClass = deviceService.getDeviceClass(request)
if (deviceClass == "FeaturePhone") {
render(view: '/featurephone/expanded_search')
}
}
这是我的测试方法:
void testExtendedSearchIndex01() {
deviceServiceMock.demand.getDeviceClass(1..10) { def myRequest, boolean verbose ->
return "FeaturePhone"
}
controller.deviceService = deviceServiceMock.createMock()
controller.extendedSearchIndex()
assert view == "/featurephone/expanded_search"
}
此测试失败,因为视图为空。但为什么它是空的?不应该是/featurephone/expanded_search
吗?我错过了什么吗?
感谢您的帮助。
- 克里斯
答案 0 :(得分:2)
您模拟了需要getDeviceClass()
和def
的方法boolean
的签名,但您的控制器使用的另一个只需要def
。我认为你的模拟应该是:
deviceServiceMock.demand.getDeviceClass(1..10) { def myRequest ->
return "FeaturePhone"
}
建议是对deviceClass使用String,因为您知道getDeviceClass()
返回的类型:
String deviceClass = deviceService.getDeviceClass(request)
if(deviceClass == "FeaturePhone")
如果您使用IDE,例如STS,您可以调试控制器以检查服务返回的值。