根据方法接收的参数,希望返回不同的东西。
如何使用Mockito?
例如,根据" Planilha" 的ID,我希望获得不同的回报,但不知道如何实现这种平等。
我的测试
@Test(expected = InternalServerErrorException.class)
public void testReadMetadados_invalidPlanilha_invalidFormat() throws Exception {
oknok.validacao.entities.Planilha actual = new Planilha().setPath(URL_TEST.concat("click/T001.json"))
.setId("invalidFormat");
planilhaReader.readMetadados(actual);
}
我的模拟
@Bean
UploadDAO getUploadDAO() {
UploadDAO dao = Mockito.mock(UploadDAO.class);
File myFile = new File(URL_TEST, "click/T001.json");
Planilha planilha = new Planilha().setId("invalidFormat").setPath(URL_TEST.concat("click/T001.json"));
when(dao.getPlanilha(Matchers.eq(planilha))).thenReturn(myFile);
return dao;
}
答案 0 :(得分:2)
您的代码似乎是正确的,但您应确保Planilha
类正确实现equals
方法。此方法应比较相等所需的所有属性。
答案 1 :(得分:0)
首先我会先用Mockito.any测试它,如果可行的话。
when(dao.getPlanilha(Mockito.any(Planilha.class))).thenReturn(myFile);
如果这样可行,则Planilha中的equals方法不会按照您期望的方式实现。
此外,您的@Test方法期望抛出异常(expected = InternalServerErrorException.class),但您的mock不会抛出异常。只需确保您的代码将抛出该特定异常,这就是您要测试的内容。