我有一个通过 RabbitMQ 队列与其他服务集成的组件:
@Component
@ProcessingGroup("amqpProcessor")
public class ExternalEventsHandler {
@EventHandler
public void on(SomeOtherServiceEvent event) {
// Dispatches some command
}
}
我应该如何测试它?
@Test
public void shouldReactToSomeOtherServiceEvent() {
//TODO
}
最佳答案
最好的方法就是在单元测试中实例化或注入(inject)您的事件处理程序类,实例化一个测试事件,然后简单地调用该方法。像这样:
@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"));
}
关于testing - 轴突框架 : How to test @EventHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52373710/