Tôi đang cố gắng để thực hiện Mockito để thử nghiệm một phương pháp cụ thể nhưng .thenReturn (...) dường như luôn luôn được trả về một đối tượng null thay vì những gì tôi dự định:Mockito - thenReturn luôn trả về null đối tượng
CUT:
public class TestClassFacade {
// injected via Spring
private InterfaceBP bpService;
public void setBpService(InterfaceBP bpService) {
this.bpService = bpService;
}
public TestVO getTestData(String testString) throws Exception {
BPRequestVO bpRequestVO = new BPRequestVO();
bpRequestVO.setGroupNumber(testString) ;
bpRequestVO.setProductType("ALL") ;
bpRequestVO.setProfileType("Required - TEST") ;
IBPServiceResponse serviceResponse = bpService.getProduct(bpRequestVO); //PROBLEM
if (serviceResponse.getMessage().equalsIgnoreCase("BOB")) {
throw new Exception();
} else {
TestVO testVO = new TestVO();
}
return testVO;
}
}
xuân Cấu hình:
<bean id="testClass" class="com.foo.TestClassFacade">
<property name="bpService" ref="bpService" />
</bean>
<bean id="bpService" class="class.cloud.BPService" />
Mockito Phương pháp thử: sản lượng
@RunWith(MockitoJUnitRunner.class)
public class BaseTest {
@Mock BPService mockBPService;
@InjectMocks TestClassFacade mockTestClassFacade;
private String testString = null;
private BPRequestVO someBPRequestVO = new BPRequestVO();
private IBPServiceResponse invalidServiceResponse = new BPServiceResponse();
@Test (expected = Exception.class)
public void getBPData_bobStatusCode_shouldThrowException() throws Exception {
invalidServiceResponse.setMessage("BOB");
someBPRequestVO.setGroupNumber(null);
someBPRequestVO.setProductType("ALL");
someBPRequestVO.setProfileType("Required - TEST");
System.out.println("1: " + someBPRequestVO.getGroupNumber());
System.out.println("2: " + someBPRequestVO.getProductType());
System.out.println("3: " + someBPRequestVO.getProfileType());
System.out.println("4: " + someBPRequestVO.getEffectiveDate());
when(mockBPService.getProduct(someBPRequestVO)).thenReturn(invalidServiceResponse);
mockTestClassFacade.getTestData(testString);
verify(mockBPService).getProduct(someBPRequestVO);
}
}
hệ thống:
1: null
2: ALL
3: Required - TEST
4: null
gì đang xảy ra ở đây là khi tôi chạy thử nghiệm đối tượng serviceResponse là null trên dòng trong CUT được đánh dấu bằng // VẤN ĐỀ ở trên. Mong muốn của tôi là có đối tượng đó được điền bằng đối tượng "invalidServiceResponse" của tôi từ phương thức thử nghiệm của tôi. Đánh giá từ đầu ra của System.out.println của tôi nó xuất hiện rằng bpRequestVO của tôi phù hợp với someBPRequestVO của tôi trong nội dung.
Có thể một số người cho tôi thấy những gì tôi thiếu ở đây không?
Cảm ơn bạn đã dành thời gian!
Nhiều khả năng nó không phù hợp với các thông số để getProduct mà bạn thiết lập trong bạn khi (...) với những gì đang được thông qua trong phương pháp thực tế.Hãy thử sử dụng matchers trong khi (service.getProduct (argThat (...)). sau đóReturn – LeffeBrune
OP: bạn shoudl chấp nhận câu trả lời của @ lewthor thay vào đó, tôi đã nhầm lẫn, ghi đè '.equals()' là đủ, bạn không cần một đối số đối sánh – fge
Cảm ơn bạn đã thực hiện tiếp theo ... Tôi vừa thử nghiệm nó với .equals() một mình và quay lại đến trang này để chắc chắn rằng tôi đã không hiểu lầm điều gì đó. Chắc chắn tôi đã tìm thấy bình luận của bạn! Tôi đã chuyển câu trả lời được chấp nhận. Cảm ơn sự trung thực của bạn. – risingTide