【发布时间】:2020-10-02 21:31:06
【问题描述】:
当第一个 when(creditApplicationCache.getObject("")).thenRetun(response) 被调用时,我得到了一个 NPE。 creditApplicationCache 为空。
- 我正在使用 mockito 2.17.jar。
- 我添加了@RunWith(MockitoJUnitRunner.class)。
- 我也尝试过使用 MockitoAnnotations.initMocks(this)。
但没有任何帮助。 CreditApplicationCache 未初始化。
@RunWith(MockitoJUnitRunner.class)
public class WebServiceClientTest {
@InjectMocks
WebServiceClientImpl webServiceClientImpl;
@Mock
private ApplicationCacheImpl creditApplicationCache;
/*@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}*/
@Test
public void testWebServiceClient() throws BusinessException, SystemException {
WebServiceClientImpl webServiceClientImpl = new WebServiceClientImpl();
CreditCardDetailsResponse creditCardDetailsResponse = new CreditCardDetailsResponse();
creditCardDetailsResponse.setAccountNumber("1234567");
when(creditApplicationCache.getObject("XXXXXXX")).thenReturn(creditCardDetailsResponse);
when(webServiceClientImpl.getCreditCardDetails("1234")).thenReturn(creditCardDetailsResponse);
CreditCardDetailsResponse mockResponse = webServiceClientImpl.getCreditCardDetails("1234");
assertEquals(creditCardDetailsResponse.toString(),mockResponse.toString());
}
}
---------------------------------------------------------------------------------------------------------
WebServiceClientImpl.java
public class WebServiceClientImpl implements WebServiceClient {
@Autowired
private ApplicationCache creditApplicationCache;
public CreditCardDetailsResponse getCreditCardDetails(String id)
throws BusinessException, SystemException {
// Some Code
CreditCardDetailsResponse response = null;
response = (CreditCardDetailsResponse) creditApplicationCache.getObject(cacheKey);
if (response == null) {
try {
// More Code }
return response ;
}
}
【问题讨论】: