Mockito проверяет аргументы вызова метода - PullRequest
0 голосов
/ 24 августа 2018

При написании модульного теста Mockito для метода с несколькими переданными аргументами я хочу убедиться, что были переданы точные аргументы. Подпись метода (для примера):

public void process(String stringParam, int numParam, CustomObject objectParam)

Я знаю, что эти параметры должны быть переданы внутрь:

String stringParam = "line1 \n line2 \n line2 \n"
int numParam = 123;
AnotherCustomObject bank = new AnotherCustomObject(1, "Bank name")
CustomObject objectParam = new CustomObject(1, "Customer name", bank);

Проверьте метод выглядит соответственно:

verify(testObject, times(1)).process(eq(stringParam), eq(numParam), eq(objectParam));

Но результат будет

Argument(s) are different! Wanted:
...all the details of failure...
Comparison Failure:  <Click to see difference>
...the rest of details...

Когда вы нажимаете Нажмите, чтобы увидеть разницу с надеждой увидеть исходную проблему, вы увидите только запутанное сообщение Содержимое идентично (по крайней мере, в IntelliJ Idea вы видите это сообщение) enter image description here

1 Ответ

0 голосов
/ 24 августа 2018

При изучении этого случая я натолкнулся на несколько сообщений, в которых корнем его считался некорректно переопределенный метод equals () либо AnotherCustomObject, либо CustomObject.

После расследования выяснилось, что это не проблема.Все было гораздо более прозаично:

разрывы строк , которые присутствовали в строке, передаваемой методу, имели кодировку Windows по умолчанию ( / r / n ).Между тем, для злонамеренного использования в Mockito я использовал строку только с / n разрывами (это немного странно, поскольку я получил эту строку при отладке метода).

В то же время Inteliji Idea показала обе строки в режиме сравнения как равные.

Обновление : но лучше использовать файл
System.getProperty (".separator ")

...