Как использовать AnyString () внутри карты для проверки Mockito?JAVA

Программисты JAVA общаются здесь
Anonymous
Как использовать AnyString () внутри карты для проверки Mockito?

Сообщение Anonymous »

Я пишу модульный тест в приложении Spring Boot, используя Mockito и Junit 5, и я пытаюсь проверить вызов метода, в котором одним из параметров является карта . < /p>
Вот подпись метода: < /p>
< /p>
.public void someMethod(SomeClass obj, String parameter1, Map properties) { ... }
< /code>
Мне нужно убедиться, что этот метод был вызван с картой, содержащей определенные ключи (свойство2 и свойство3), но с любым строковым значением. < /p>
Вот мой тестовый код: < /p>
@Test
void testMethodVerification() {
Map properties = Map.of(
"property1", "TEST_VALUE",
"property2", anyString(), // This causes an error
"property3", anyString() // This causes an error
);

verify(mockedService, times(1)).someMethod(
any(SomeClass.class),
eq("some_attribute"),
eq(properties) // Issue occurs here
);
}
< /code>
Однако я получаю эту ошибку: < /p>
org.mockito.exceptions.misusing.UnfinishedVerificationException:
Missing method call for verify(mock) here:
-> at com.mycompany.myproject.MyTestClass.testMethodVerification(MyTestClass.java:XX)
< /code>
Вопрос:
Как я могу проверить, что что -то было вызвано с картой, где «свойство2» и «свойство3» могут быть какой -либо строкой? Тем не менее, я столкнулся с незаконченным вертификацией Exception, потому что AnyString () является совместимым с аргументом и не может быть использован непосредственно внутри map.of (). < /P>
Я ожидал, что Mockito подтвердил, что метод был вызван с помощью карты, содержащей «свойство1» как фиксированное значение и «свойство2» и «свойство3» в виде любых строковых значений. Тем не менее, тест не удался из -за неправильного использования сопоставления.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... rification

Вернуться в «JAVA»