Рубрики
Без рубрики

Mockito: Передача any() и литерала в один и тот же метод

Mockito имеет ограничение, когда при использовании Mockito.when(какой-то метод(…)) вы не можете пройти в комбинации… С тегами java, mockito, testing, groovy.

Mockito имеет ограничение, когда при использовании Mockito.when(некоторый метод(...)) вы не можете передать комбинацию any() и литеральных значений в someMethod()

Решение 1 (предпочтительное и как показано Стивеном):

Mockito.when(context.config File Provider(eq(“file1”), any())).thenReturn(“file1_contents”)

Решение 2 (работает, но уродливо и оригинальное сообщение здесь):

Mockito.when(context.configFileProvider("file1", any())).thenReturn("file1_contents")

Есть способ обойти это, на который я наткнулся, пытаясь протестировать вложенные замыкания при написании скриптов Groovy для Jenkins (не спрашивайте меня). Вот он:

    Mockito.when(context.configFileProvider(Mockito.any(), Mockito.any())).thenAnswer(
        new Answer(){
            @Override
            String answer(InvocationOnMock invocation){
                List arg1 = invocation.getArgument(0)
                switch (arg1.get(0)) {
                    case "file1": return "file1_contents"
                }
            }
        }
    );

Это логически эквивалентно предыдущему утверждению.

Оригинал: “https://dev.to/arsenalist/mockito-passing-in-any-and-a-literal-to-the-same-method-3god”