[英]Mockito is calling real method instead of stubs
I have mocked several dependencies and defined their behavior.我已经模拟了几个依赖项并定义了它们的行为。 I do not wish for real methods to be called on my dependencies - the whole point of mocking.
我不希望在我的依赖项上调用真正的方法——mocking 的全部要点。
My test:我的测试:
@Test
public void should_Create_MultiDoc_Ticket() throws URISyntaxException{
DataTransformationService transformationService = Mockito.mock(DataTransformationService.class);
JSONObject samplePolicyData = createSamplePolicyData("Sample Multidoc Template");
InteractiveRequest sampleInteractiveRequest = createSampleInteractiveRequest();
when(transformationService.transformMultiDocData(createSampleInteractiveData())).thenReturn(createSampleInteractiveData());
String ticketId = interactiveTicketService.createTicket(samplePolicyData.toString());
assertThat(ticketId).isEqualTo("sampleTicketId");
verify(transformationService, times(1)).transformMultiDocData(createSampleInteractiveData());
}
Specifically, the real transformationService.transformMultiDocData()
method is being called, when it shouldn't be.具体来说,真正的
transformationService.transformMultiDocData()
方法正在被调用,而它不应该被调用。
The error when I run the test:我运行测试时的错误:
org.springframework.web.client.ResourceAccessException: I/O error on POST request for "https://us-data-transformation-sample/template": us-data-transformation-sample; nested exception is java.net.UnknownHostException: us-data-transformation-sample
at com.lmig.us.services.DataTransformationService.transformMultiDocData(DataTransformationService.java:114)
at com.lmig.us.services.InteractiveTicketService.createTicket(InteractiveTicketService.java:56)
at com.lmig.us.services.InteractiveTicketServiceTest$createTicket.should_Create_MultiDoc_Ticket(InteractiveTicketServiceTest.java:311)
... 82 more
Does anyone know what's going on here?有谁知道这里发生了什么?
You should write the test like this:你应该这样写测试:
@ExtendWith(MockitoExtension.class)
public class InteractiveTicketServiceTest {
@Mock
DataTransformationService transformationService;
@InjectMocks
InteractiveTicketService interactiveTicketService;
@Test
public void should_Create_MultiDoc_Ticket() throws URISyntaxException{
JSONObject samplePolicyData = createSamplePolicyData("Sample Multidoc Template");
InteractiveRequest sampleInteractiveRequest = createSampleInteractiveRequest();
when(transformationService
.transformMultiDocData(createSampleInteractiveData()))
.thenReturn(createSampleInteractiveData());
String ticketId = interactiveTicketService.createTicket(samplePolicyData.toString());
assertThat(ticketId).isEqualTo("sampleTicketId");
verify(transformationService, times(1)).transformMultiDocData(createSampleInteractiveData());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.