如何在运行时为测试注入正确的模拟?

时间:2020-11-12 15:10:49

标签: java spring-boot junit mockito

我有下一个单元测试,它运行流程:

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的新实例。我如何向其注入正确的模拟?

0 个答案:

没有答案