3

我有这个组件,它通过 RabbitMQ 队列与其他服务集成:

@Component
@ProcessingGroup("amqpProcessor")
public class ExternalEventsHandler {

   @EventHandler
    public void on(SomeOtherServiceEvent event) {
        // Dispatches some command 
    }

}

我应该如何测试这个?

@Test
public void shouldReactToSomeOtherServiceEvent() {
    //TODO
}
4

1 回答 1

2

最好的方法是在单元测试中实例化或注入您的事件处理程序类,实例化一个测试事件,然后简单地调用该方法。像这样的东西:

    @Mock
    private FooRepository fooRepository;

    private FooEventHandler fooEventHandler;

    @Before
    public void before() {
        fooEventHandler = new FooEventHandler(fooRepository);
    }

    @Test
    public void createFoo() {
        fooEventHandler.createFoo(new FooCreatedEvent("fooId");

        ArgumentCaptor<Foo> argument = ArgumentCaptor.forClass(Foo.class);
        verify(fooRepository, times(1)).save(argument.capture());
        assertTrue(argument.getValue().getId(), "fooId"));
    }
于 2018-09-23T20:40:46.623 回答