在这种情况下,如何使用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);