是否可以将方法的结果作为另一个模拟的返回值?
我有类似的东西:
Order savedOrder = orderDataService.save(order);
try{
savedOrder = orderDataService.findById(savedOrder.getId());
} catch (SomeException e) {
...
}
,由于我在保存方法中有一些业务逻辑,所以我不想创建一个模拟的结果,而是要访问它并将其用于查找方法。
我认为您可以使用Spy
和部分模拟。在一般情况下,假设这样的课程:
public class MockedBean {
public String mockedMethod() {
return "should have been mocked!";
}
public String notMockedMethod() {
return "should NOT have been mocked!";
}
}
yuu可以进行部分模拟:
@Test
public void test() {
MockedBean mb = new MockedBean();
MockedBean spy = Mockito.spy(mb);
when(spy.mockedMethod()).thenReturn("THE MOCKED VALUE");
log.info("{}", spy.mockedMethod());
log.info("{}", spy.notMockedMethod());
}
这将导致输出,例如:
20:32:14.180 [主要] info org.example.mockito.partialmock.partialmock-模拟的值
20:32:14.183 [主要] info org.example.mockito.partialmock.partialmock-不应嘲笑!