#unit-testing #grails #groovy #mocking #spock
#модульное тестирование #grails #groovy #издевательство #спок
Вопрос:
Я издеваюсь над SearchableService в спецификации Spock:
// 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 ожидает (строка, строка), но получает (строка, закрытие).
Что здесь не так? Как я могу исправить ошибку?
Ответ №1:
Вы вызываете suggestQuery(String, Map)
, но вы издеваетесь suggestQuery(Map)
. Попробуйте
sControl.demand.suggestQuery { String query, Map m -> 'suggested query string' }
Комментарии:
1. Не уверен, почему я пропустил комментарий / принятие вашего ответа. В настоящее время jira.grails.org/browse/GPSPOCK-10 применимо, так что я проверю еще раз, когда смогу проверить ваше предложение.