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”