InvalidArgumentException при возврате значения - PullRequest
0 голосов
/ 04 мая 2019

Я новичок в JMockit.Недавно я пытался написать модульные тесты, где я должен тестировать системный метод, который принимает аргумент.Внутри тестируемого метода экземпляр аргумента объединяет несколько своих методов для возврата объекта Collection.

Приведенный ниже код имитирует точную ситуацию, с которой я сталкиваюсь.Я использую jmockit-1.9

Тестируемая система

public class SystemUnderTest {

    public void doSomething(Dependency dependency) {
        List<String> list = dependency.getMap().get("some-key");
        System.out.println("got list -> " + list);
    }
}

Класс зависимости

public class Dependency {       
    private Map<String, List<String>> map;    
    public Map<String, List<String>> getMap() {
        return map;
    }    
    public void setMap(Map<String, List<String>> map) {
        this.map = map;
    }
}

Тест

@Test
public void testDoSomething(
        @Mocked Dependency dependency,
        @Mocked Map<String, List<String>> map,
        @Mocked List<String> list
        ) {

    new NonStrictExpectations() {{
        dependency.getMap(); result = map;
        map.get(anyString); result = list; //exception occurs here  
    }};

    SystemUnderTest sut = new SystemUnderTest();        
    sut.doSomething(dependency);        
}

Когда я запускаю тест, я получаю следующее исключение

java.lang.IllegalArgumentException: Invalid return value for method returning class java.util.HashMap

в этой строке

 map.get(anyString); result = list;

Как ясно видно, тип возвращаемого значения map.get() должен быть List, но он говорит, что метод возвращает HashMap.

Что я делаю не так?

Любая помощь будет оценена;

...