В моем классе зависимости вводятся весной. Во время тестирования я использую mocks. Я получаю исключение нулевого указателя, когда я вызываю sys.getId("abc12345")
в следующем коде. Мне интересно, как написать единичный тест, который получает 100% -ный охват.Mockito насмешливые объекты изнутри локального метода
Класс испытываемого:
public class SystemUT implements SUTIface{
@Inject
private AccountLookupDAO dao;
@Inject
private OrchService service;
public Response perform(Request req){
String sellerId = getId(request.getSeller().getNum());
String buyerId = null;
if(req.getBuyerId){
buyerId = getId(request.getBuyer().getNum())
}
service.execute(Request,sellerId,buyerId)
}
String getId(String num){
PrefAcct prefAcctObj = dao.lookupPrefId(num,Consants.StrArr);
PrefSysOfRecObj sorObj= prefAcctObj.getSysOfRecord();
return sorObj.getId();
}
}
тест Unit:
public Class SystemUTTest{
@Mock
SystemUT sys;
@Mock
AccountLookupDAO daoMock;
@Mock
OrchService serviceMock;
@Mock
PrefAcct prefAcctObj;
@Mock
PrefSysOfRecObj sorObj;
@Before
public void setup(){
Whitebox.setInternalState(sys, daoMock, serviceMock);
}
@Test
public test getId(){
when(dao.lookupPrefId(any(String.class), any(String[].class))).thenReturn(prefAcctObj);
when(prefAcctObj.getSysOfRecord()).thenReturn(sorObj);
when(sorObj.getId()).thenReturn("185");
assertEquals("185",sys.getId("abc12345"));
}
}
Я не уверен, что вы пытаетесь достичь в целом. ваш тест getID(), похоже, проверяет, что насмешливые работы? Вы не должны быть @Mocking вашего объекта sys, просто инициализируйте его как обычный sys = новый SystemUT() в вашей настройке. – KarlM