【发布时间】:2019-12-22 02:08:39
【问题描述】:
我想要一个带有可变参数的方法,但它不起作用,因为该方法仍然被调用。 我已经尝试了以下但没有成功:
ArgumentMatchers.any()
新字符串[] {}
新字符串[0]
但是在所有这些情况下,方法仍然被调用。
有我的课:
@Service
public class ProjetoServiceImpl extends DefaultServiceImpl<Projeto,ProjetoRepository> implements ProjetoService {
@Override
public List<Projeto> buscaAtestadosComFiltro(String[] filtros) {
List<Projeto> projetos = buscarTodos(); // I want to mock this line
projetos = filtraResultado(projetos, filtros);
return projetos;
}
}
/////////////////////////////////////// /////
public class ProjetoServiceImplTest {
private ProjetoServiceImpl projImpl;
@MockBean
private ProjetoService projetoServiceMock;
@Test
public void testaBuscaAtestadosComFiltro() {
Projeto projeto1 = new Projeto();
List<Projeto> projetos = new ArrayList<Projeto>();
projetos.add(projeto1);
when(projetoServiceMock.buscarTodos(ArgumentMatchers.<String>any())).thenReturn(projetos);
String[] filtros = new String[] {"java"};
projImpl = new ProjetoServiceImpl();
List<Projeto> result = projImpl.buscaAtestadosComFiltro(filtros);
assertNotNull(result);
}
}
【问题讨论】:
-
检查我的答案
here。如果您的实现未传递参数,您可能需要将参数与空的Object[]匹配。 -
String...equivale àString[].... 我的意思是,String...相当于String[],你可以尝试传递一个空数组甚至null,比如...projectServiceMock.buscarTodos(new String[0])).then... -
我已经尝试了所有建议,包括如何在 Mockito 链接中正确匹配可变参数,但我没有成功。还有其他建议吗?
-
请提供minimal reproducible example。真正的方法在哪里被调用,那里实际使用了哪些参数?另外,如果您说它不起作用,您到底指的是什么?