测试
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MockabstractionApplication.class)
public class SimpleTest {
@SpyBean
private SimpleService spySimpleService;
@Before
public void setup() {
initMocks(this);
}
@Test //fails
public void test() throws Exception {
when(spySimpleService.test(1, Mockito.<String>anyVararg())).thenReturn("Mocked!");
}
}
服务
@Service
public class SimpleService {
public String test(int i, String... args) {
return "test";
}
}
测试失败,显示下一条消息:
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 参数匹配器的使用无效! 2匹配预期,1记录:
我必须使用int作为第一个参数和任何数量的varargs。
答案 0 :(得分:4)
如果您将匹配器用于一个参数,则必须将其用于所有参数。
when(spySimpleService.test(Mockito.eq(1), Mockito.<String>anyVararg())).thenReturn("Mocked!");
答案 1 :(得分:0)
你不能混合匹配器和适当的参数
spySimpleService.test(1, Mockito.<String>anyVararg())
可以替换为
spySimpleService.test(anyInt(), Mockito.<String>anyVararg())
答案 2 :(得分:0)
我认为你需要使用参数匹配器两个参数,你不能在那里混合和匹配。
尝试
@Test //fails
public void test() throws Exception {
when(spySimpleService.test(anyInt(), Mockito <String>anyVararg())).thenReturn("Mocked!");
}