Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在这种情况下,如何使用java进行测试?_Java_Spring_Spring Boot_Mocking_Mockito - Fatal编程技术网

在这种情况下,如何使用java进行测试?

在这种情况下,如何使用java进行测试?,java,spring,spring-boot,mocking,mockito,Java,Spring,Spring Boot,Mocking,Mockito,我正在用模拟软件测试一项服务 问题是直接从类创建并注入实例进行测试 来源如下所示 public OrderOutDTO createOrder(OrderSessionTo OrderSessionTo){ Order Order=orderRepository.save(新订单(OrderSessionTo)); CreateOrderResDTO callServiceOrder=callService.createOrder(新的CreateOrderReqDTO(order)); Cre

我正在用模拟软件测试一项服务

问题是直接从类创建并注入实例进行测试

来源如下所示

public OrderOutDTO createOrder(OrderSessionTo OrderSessionTo){
Order Order=orderRepository.save(新订单(OrderSessionTo));
CreateOrderResDTO callServiceOrder=callService.createOrder(新的CreateOrderReqDTO(order));
CreateOrderReqDTO CreateOrderReqDTO=mock(CreateOrderReqDTO.class);
createTrace(order,callServiceOrder.getData().getReceived().getTransactionHash(),Trace.PUBLIC);
返回新OrderOutDTO(订单,空);
}
测试源如下所示

@测试
公共秩序{
//给定
CallService CallService=mock(CallService.class);
CreateOrderResDataDTO CreateOrderResDataDTO=mock(CreateOrderResDataDTO.class);
//什么时候
当(callService.createOrder(createOrderReqDTO))。然后返回(createOrderResDTO);
OrderOutdToOrder=orderService.createOrder(orderSessionDTO);
//然后
断言(order,is(Matchers.notNullValue());
断言(order.getOrder(),is(Matchers.notNullValue());
断言(order.getOrder().getReceiver().getName())为(“测试”);
}
我以为这次考试会顺利结束。但是在下面的代码中,它返回了
null
并失败

//callService.createOrder(新的CreateOrderReqDTO(order))返回null
CreateOrderResDTO callServiceOrder=callService.createOrder(新的CreateOrderReqDTO(order));

它似乎无法识别它,因为服务注入了一个新实例。我想要返回模拟数据。我该怎么办?

在下一行中,您正在将
createOrderReqDTO
上的行为模拟为参数:

when(callService.createOrder(createOrderReqDTO)).thenReturn(createOrderResDTO);
然而,进一步来说,您正在传递一些其他对象:

OrderOutDTO order = orderService.createOrder(orderSessionDTO);
这种行为是无法识别的,你必须通过你以前嘲笑过的同样的东西。

我自己发现的

我使用argumentMatchers

when(callService.createOrder(createOrderReqDTO)).thenReturn(createOrderResDTO);


谢谢。

您考虑过使用partialmock吗?
when(callService.createOrder(any())).thenReturn(createOrderResDTO);