Тестовое покрытие для класса Autowired внутри класса mock - PullRequest
0 голосов
/ 01 марта 2019

У меня есть структура ниже, и у меня есть проблема, что мой тест, что я не могу достичь класса Autowired DataLoader.getListForName из моего MyHelperTest.testGetDataAsList.То есть, когда я запускаю тест, поток даже не идет к методу getListForName.Чего мне не хватает

@Component
public class MyHelper{
@Autowired
private DataLoader dataLoader;

public List<String> getDataAsList(String name, boolean flag)
{
    List<String> dataList = new ArrayList<>();
    dataList.addAll(dataLoader.getListForName(name,flag));
    return dataList;
}
}

=====

@Component
public class DataLoader{
    Map<String,List<String>> myMap = new HashMap<>();
    public List<String> getListForName(String name, boolean flag){
        if(flag) return myMap.get(name); 
    }
}

=====

public class MyHelperTest{
    @InjectMocks
    private MyHelper myHelper;

    @Mock
    private DataLoader dataLoader;

    @Test
    public void testGetDataAsList(){
        List<String> myList = myHelper.getDataAsList("test1",true);
        assertTrue(myList.contains("Age"));

    }
}

1 Ответ

0 голосов
/ 01 марта 2019

, так как вы отключили dataLoader, у вас нет никаких ценных действий, прежде чем вы его определите.Например: если вы хотите вызвать .getDataAsList("test1", true), вам нужно установить

Mockito.when(myHelper.getDataAsList("test1", true).thenReturn(new ArrayList<>(Arrays.asList("Age")));

перед вызовом.

помните, что mock всегда генерирует фиктивный объект без каких-либо реальных свойств или методов,не реальный объект, который имеет все свои свойства или методы, определенные

...