Проверка вызова метода с разными аргументами с использованием аргументов matchers eq () не работает, жалуясь, что аргументы разные - PullRequest
0 голосов
/ 29 августа 2018

Я пишу контрольный пример для проверки выполнения с помощью конкретного вызова метода с конкретными аргументами. Тест должен пройти только тогда, когда определенные значения переданы (например, только когда статус и ParseError переданы) в метод. Ниже приведен фрагмент кода для проверки:

Mockito.verify(exeImpl, Mockito.atLeastOnce()).setData(eq("status"), eq("ParseError"));

и дело не удалось с ниже:

Argument(s) are different! Wanted: 
exeImpl.setData(
  "status",
  "ParseError"
);
-> at com.TestTask.testRest(TestTask.java:280)
Actual invocation has different arguments:
exeImpl.setData(
  "status",
  "Error"
);
-> at 
com.TestTask.setDefault(Task.java:186)

Фактический вызов, упомянутый в ошибке, вызван тем, что setData вызывается с значениями по умолчанию перед запуском бизнес-логики. После выполнения бизнес-логики setData вызывается снова для установки результата.

И setData имеет определение ниже

setData(final String arg1, final Object arg2) {...}

Я знаю об ArgumentCaptor, но я просто пытаюсь заставить его работать так, как я полагаю, что совпадение eq () используется здесь, чтобы проверить равенство значения передано для обоих аргументов. Или это вызывает проблему, потому что это объект.

Можно ли будет проверить, как это? Спасибо.

1 Ответ

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

Проблема была с моим кодом, так как мой тест не был правильно инициализирован с @Before.

...