Когда я тестирую класс A (TestNG), который использует некоторые методы из какого-либо другого вспомогательного класса, я высмеиваю вспомогательный класс (Mockito) для тестирования класса A. но когда (helper.methodUsedByClassA (value)). ThenReturn ( new HashMap> ()) эта строка кода фактически вызывает helper.methodUsedByClassA, и генерируется исключение нулевого указателя (поскольку данные, которые я использую для тестирования, недопустимы)
почему это происходит? Почему имя метода внутри mockito «когда» действительно вызывается?
class ATest{
@Mock
private Helper helper;
private A target;
@BeforeTest
public void setUp() {
MockitoAnnotations.initMocks(this);
this.target = new UpdateDigicatKdpAsinUtil(helper);
}
@Test(dataProvider = "data")
public void testMethod(List<String> value) {
when(helper.methodUsedByClassA(value)).thenReturn(new HashMap<String, List<String>>({{put("test", new ArrayList<>())}}));
}
@DataProvider
public Object[][] data(){
List<String> list = new ArrayList<>();
return new Object[][]
{
{list}
}
}
class Helper{
public Map<String, List<String>> methoUsedByClassA(int value) {
//This method is being executed because it is mentioned inside "when"
}
}