2012-06-21 4 views
1

Я использую Ibatis 2.2 и хотел дразнить этот призыв к queryForObjectMockito: шпионить Ibatis queryForObject и изменить отображение параметра

this.queryForObject("stored_proc_name", paramMap); 

paramMap является построить внутри метода и имеет входные параметры, а также будет удерживайте errorCode и errorMessage после вызова proc (выходные параметры для proc). Я хотел бы установить эти два значения в paramMap при вызове строки.
Я использую «шпион» на моем объекте dao и перехватываю, когда вызывается над строкой. Я попытался сделать следующее, но он не работает, так как я на самом деле не захватывая объект результата в коде Java, но полагаться на модифицированном paramMap ..

doReturn(paramMap).when(daoSpy).queryForObject(eq("stored_proc_name"), anyMap()); 

Кто-нибудь знает, если это возможно изменить, что paramMap когда вызывается запрос queryObject?

ответ

0

Несомненно. Вы должны использовать объект Answer с методом, который добавляет требуемое значение к переданной карте. Это может выглядеть примерно так.

doAnswer(new Answer<Map<String,Object>>(){ 
    @Override 
    public Map<String,Object> answer(InvocationOnMock invocation){ 
     Map<String,Object> params = (Map<String,Object>) invocation.getArguments()[0]; 
     params.put("errorCode", 55); 
     params.put("errorMessage", "Your message here"); 
     return params; 
    }}).when(daoSpy).queryForObject(
     eq("stored_proc_name"), anyMapOf(String.class, Object.class)); 

Для получения дополнительной информации, http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html#answer_stubs

Смежные вопросы