我有一个集成测试类,其中@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表示),但是我可以看到“ >>>我在日志中<<<”