我嘲笑了几个依赖项并定义了它们的行为.我不希望在我的依赖项上调用真正的方法--这就是嘲笑的全部意义所在.

我的测试是:

@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());
}

具体地说,real transformationService.transformMultiDocData()方法正在被调用,而它不应该被调用.

运行测试时出现错误:

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

有人知道这是怎么回事吗?

推荐答案

您应该这样编写测试:

@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());
    }
}

Java相关问答推荐

ittext pdf延迟签名,签名无效

连接Quarkus中的两个异步操作

基于调车场算法的科学计算器

解释左移在Java中的工作原理

如何让JavaFx应用程序识别依赖项?

在Java 17中使用两个十进制数字分析时间时出错,但在Java 8中成功

使用用户引入的参数生成人员数组

在Eclipse中调试未导出的JDK模块的Java包

有没有可能在时间范围内得到多种解决方案?

将JSON字符串转换为Java类

Java页面筛选器问题

来自外部模块的方面(对于Java+Gradle项目)不起作用

X=x*0.90;产生有损转换误差.X*=0.90;不是.为什么?

在Java泛型中使用通配符时,如何推断类型

在ECLIPSE上的M1 Pro上运行JavaFX的问题

无限递归Java问题

java.lang.ClassCastException:com.google.firebase.FirebaseException无法转换为com.google.fire base.auth.FirebaseAuthException

如何调查进程列表中不可见的活跃 MySQL 事务?

没有 Stream API 的 Collection GroupBy 聚合

如何将表示特殊字符的字符串转换为其字符表示形式