Существует правило о сопоставителях для параметров метода stubbed: все параметры - все сопоставители.InvalidUseOfMatchersException будет выброшено, если совпадения объединены с необработанными значениями.В этой ситуации поможет eq () matcher.Например, я хочу проверить, что любое целое число, разделенное на 0, выдаст MyException.У заглушки div () есть два параметра.Первое задается anyInt (), второе задается eq (0), а не необработанным 0.
public interface MatcherDemo {
double div(int x, int y) throws Exception;
}
@Test(expected = MyException.class)
public void test() throws Exception {
when(demo.div(anyInt(), eq(0))).thenThrow(new MyException());
demo.div(5, 0);
}
Но я обнаружил, что сопоставление eq () нельзя применять для удвоения.Если сигнатура div () изменена, например:
double div(double x, double y) throws Exception;
, тогда Mockito сгенерирует исключение InvalidUseOfMatchersException.
Интересно, так ли это, потому что сравнение double не может быть сделаноточно, а как мне это сделать?