AxonFramework:如何测试@EventHandler
AxonFramework: How to test @EventHandler
我有一个通过 RabbitMQ 队列与其他服务集成的组件:
@Component
@ProcessingGroup("amqpProcessor")
public class ExternalEventsHandler {
@EventHandler
public void on(SomeOtherServiceEvent event) {
// Dispatches some command
}
}
我该如何测试?
@Test
public void shouldReactToSomeOtherServiceEvent() {
//TODO
}
最好的方法就是在单元测试中实例化或注入您的事件处理程序 class,实例化一个测试事件,然后简单地调用该方法。像这样:
@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"));
}
我有一个通过 RabbitMQ 队列与其他服务集成的组件:
@Component
@ProcessingGroup("amqpProcessor")
public class ExternalEventsHandler {
@EventHandler
public void on(SomeOtherServiceEvent event) {
// Dispatches some command
}
}
我该如何测试?
@Test
public void shouldReactToSomeOtherServiceEvent() {
//TODO
}
最好的方法就是在单元测试中实例化或注入您的事件处理程序 class,实例化一个测试事件,然后简单地调用该方法。像这样:
@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"));
}