我有下一个单元测试,它运行流程:
1) create message -> add to jms queue
2) read message from jms -> process it
分为两个部分:添加和阅读。而且我遇到了问题,因为当我用模拟物准备豆子时,第二部分创建了新的豆子(而不是模拟物)。
总体外观:
@Service
class SomeJmsService {
@Autowired
private SomeProcessingService service;
public void addToJms(...) { ... }
@Listener(...)
public void readFromJms(...) { service.process(...) }
是的,当我运行测试时,我正在准备模拟
var processingMock = mock(SomeProcessingService.class);
var jmsService = new SomeJmsService(processingMock);
我的测试如下:
@Test
void test() {
jmsService.addToJms(...);
Thread.sleep(2000);|
verifyThatprocessingMockWasInvoked();
}
因此,当JMS从队列中读取msg时,将创建SomeProcessingService
的新实例。我如何向其注入正确的模拟?