у меня есть этот объект kotlin
open class EnvironmentVars {
val variables: Map<String, String>
get() = System.getenv()
}
Теперь мне нужно проверить это из теста Java Junit,
@Mock
private EnvironmentVars environmentVars;
@Test
public void makeSureVarsCaseInsensitive() {
LoaderFactory lf = new LoaderFactory();
// setup the mock
Map<String,String> myMap = new HashMap<>();
myMap.put("ENV", "ok");
when(environmentVars.getVariables()).thenReturn(myMap);
// check caps
assertEquals(lf.getEnv(environmentVars,"ENV"), "ok");
// check lower
assertEquals(lf.getEnv(environmentVars,"env"), "ok");
}
Но когда я запускаю это, я получаю
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.
For example:
when(mock.getArticles()).thenReturn(articles);
Also, this error might show up because:
1. you stub either of: final/private/equals()/hashCode() methods.
Those methods *cannot* be stubbed/verified.
Mocking methods declared on non-public parent classes are not supported.
2. inside when() you don't call a method on mock but on some other object.
Я думаю, это потому, что getVariables
является окончательным по умолчанию.
Есть ли лучший способ? Кстати, я должен написать модульный тест на Java. Весь смысл этого приложения в том, чтобы доказать властям, что код Котлина может прервать