макет объекта kotlin из теста java junit - PullRequest
0 голосов
/ 04 января 2019

у меня есть этот объект 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. Весь смысл этого приложения в том, чтобы доказать властям, что код Котлина может прервать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...