Mockito возвращает ноль, когда я издеваюсь над методомJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Mockito возвращает ноль, когда я издеваюсь над методом

Сообщение Anonymous »

У меня есть этот метод
private String mainMethod(String param) {

String response = client.internalCall(EnumValue, Map.of(
"key1", param,
"key2", 1
), String.class);

}

Где это определение InternalCall
public T internalCall(final MyEnum e, final Map params, Class classType) {
final String response = internalCall(e, Collections.unmodifiableMap(params));
return convert(response, classType);
}

И мой тестовый класс для основного метода таков:
@Test
void test() {
Map map = Map.of(
"key1", "123",
"key2", 1
);
Mockito.when(client.internalCall(eq(MyEnum.EnumValue), anyMap(), eq(String.class))).thenReturn("Success");

ReflectionTestUtils.invokeMethod(serviceClass, "mainMethod", "123456");
}

Но Mock не работает, и вместо возврата строки «Успех» я получаю

org. ockito.Exceptions.misusing.UnnecessaryStubbingException:
Обнаружены ненужные заглушки. Чистый и удобный в сопровождении тестовый код
не требует никакого ненужного кода. Следующие заглушки не нужны
(нажмите, чтобы перейти к соответствующей строке кода):
  • -> по адресу com.zzz.xxxx.ServiceClassTest.test( ServiceClassTest.java:271)
    Пожалуйста, удалите ненужные заглушки или используйте «мягкую» строгость. Дополнительная
    информация: javadoc для класса UnnecessaryStubbingException.
at
org.mockito.junit.jupiter.MockitoExtension.afterEach(MockitoExtension. java:197)
в java.base/java.util.ArrayList.forEach(ArrayList.java:1511) в
java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

Я пробовал много вещей, например
Mockito.when(client.internalCall(any(), any(), any())).thenReturn("Success");

но ничего из этого не работает. Я не уверен, почему Mockito не распознает мой макет.
Есть идеи?
РЕДАКТИРОВАТЬ:
Извините, я забыл добавить некоторые подробности. Мой тестовый класс выглядит так
@ExtendWith(MockitoExtension.class)
class ServiceImplTest {

@InjectMocks
ServiceClass serviceClass;

@Mock
Client client;

@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
}

@Test
void test() {
Map map = Map.of(
"key1", "123",
"key2", 1
);
Mockito.when(vbsmClient.internalCall(eq(MyEnum.EnumValue), anyMap(), eq(String.class))).thenReturn("Success");

ReflectionTestUtils.invokeMethod(serviceClass, "mainMethod", "123456");
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... k-a-method
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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