Я пытаюсь провести модульное тестирование сервисного метода, который принимает в качестве параметров дату и params LinkedHashMap от контроллера.Настройка выглядит следующим образом:
def save = {CustomCommandObject erc ->
...
if (erc.conditionProperty != null) {
def result = myService.ServiceMethod(someDate, params)
...
}
....
redirect(controller: 'controllerName', action: 'actionName', id: params.id)
}
class MyService {
static transactional = false
....
def TypeToReturn ServiceMethod(Date someDate, def params){
...
TypeToReturn typeToReturn = new TypeToReturn(params)
return typeToReturn
}
....
}
Один из тегов в представлении GSP имеет тип :
и TypeToReturn имеет свойство:
LocalTime propertyName
Когда приложение нормально работает в браузере, карта параметров правильно передается методу сервиса и newTypeToReturn (params) создает экземпляр TypeToReturn .params содержит следующее:
{java.util.LinkedHashMap$Entry@xxxxx} propertyName_hour -> 20
{java.util.LinkedHashMap$Entry@xxxxx} propertyName_minute -> 30
{java.util.LinkedHashMap$Entry@xxxxx} propertyName -> struct
Поэтому в моем тесте для метода обслуживания у меня есть следующее:
void testSomething() {
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
params.put("propertyName","struct")
params.put("propertyName_hour", "20")
params.put("propertyName_minutes", "30")
myService = new MyService()
Date d = new Date()
myService.ServiceMethod(d,params)
}
Однако , когда я пытаюсь запуститьtest я получаю следующую ошибку:
org.codehaus.groovy.runtime.typehandling.GroovyCastException:
Cannot cast object 'struct' with class 'java.lang.String' to class
'org.joda.time.LocalTime'
Если я пропускаю params.put ("propertyName", "struct") из карты полностью, то снова (правильно) появляются ошибки, говорящие, чтоTypeToReturn не имеет свойства propertyName_hour
Каким образом мне следует проводить модульное тестирование такого сервисного метода, который использует параметры params Map из контроллера?Простое воссоздание карты в тесте, похоже, не работает.Должна ли карта параметров быть насмешливой или заурядной?
Спасибо