Mockito-使用@RabbitListener注释方法的bean上的@SpyBean创建另一个使用者

时间:2019-02-06 15:14:20

标签: spring mockito

我有一个集成测试类,其中@SpyBean批注在一个依赖项之上,并使用verify测试调用次数,但是@SpyBean添加了另一个队列使用方和verify方法,回答与模拟没有任何交互。

我已经尝试过Mocks,Spies,MockBeans的一些变体。当我@Spy有问题的bean时,我只有一个使用者,但没有与模拟交互。 @SpyBean创建了另一个队列使用者,但是在一个环境中测试通过了(我没有调用的正确性,因此队列可能被模拟消耗了),而在其他环境中,队列却被real(?)类消耗了,因此方法不会被调用。在两种情况下,我都可以看到侦听器方法内部的日志输出调用了有问题的方法。我不知道该怎么解决...

@Service 
public class MyDependency {

  @RabbitListener(queues = "someQueue")
  public void handleError(Message<?> message) {
      log.info(">>>>>> I'M HERE <<<<<<<<");
      handleFail(message);
  }
}

我在测试班上有

public class IntegrationTest {

  @SpyBean
  MyDependency myDependency;

  @Test
  void shouldPass() {   
    //some code... 
    verify(myDependency, times(2)).handleError(any());
  }
}

预期结果是:我已经两次调用handleError方法,并且没有创建其他使用者 实际:创建了队列的其他使用者(得到了两个),并且没有使用模拟进行迭代,没有调用方法(mockio表示),但是我可以看到“ >>>我在日志中<<<”

0 个答案:

没有答案