Можно ли применить eq () к double? - PullRequest
0 голосов
/ 28 июня 2019

Существует правило о сопоставителях для параметров метода 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 не может быть сделаноточно, а как мне это сделать?

1 Ответ

0 голосов
/ 28 июня 2019

Я не уверен, что вы пытались, но использование

when(demo.div(anyDouble(), eq(0d))).thenThrow(new MyException());

, похоже, не имеет никаких проблем.

Возможно, вы забыли изменить выражение eq (0) навдвойне?Но я получаю исключение UnnecessarStubbing в этом случае, потому что оно не отображается на правильный метод.

(протестировано с JUnit 5 & Mockito 2.27.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...