我在Spock规范中 mock SearchableService:
// In SearchControllerSpec:
def sControl = mockFor(SearchableService)
sControl.demand.suggestQuery { Map m -> 'suggested query string' }
controller.searchableService = sControl.createMock()
被测试的代码片段如下所示:
// In SearchController:
qSuggestion = searchableService.suggestQuery( query , allowSame:false)
// FAILS:
assert qSuggestion == 'suggested query string'
highlightedSuggestion = StringQueryUtils.highlightTermDiffs(query, qSuggestion)
断言失败-显然是由于
qSuggestion
持有闭包而不是已定义的字符串这一事实。最终语句按照HighlightTermDiffs的期望(String,String)失败,但是正在获取(String,Closure)。
这是怎么了?我该如何纠正错误?
最佳答案
您正在调用suggestQuery(String, Map)
,但在 mock suggestQuery(Map)
。尝试
sControl.demand.suggestQuery { String query, Map m -> 'suggested query string' }
关于unit-testing - 为什么此模拟 'return'是一个Closure,而不是实际的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7651207/