testing - 轴突框架 : How to test @EventHandler

标签 testing axon

我有一个通过 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/

相关文章:

java - 如何在 Firefox 45.0 中安装 Selenium IDE(selenium-ide-2.9.0.xpi)?

cqrs - @AggregateIdentifier & @TargetAggregateIdentifier 的理解

unit-testing - 如何模拟已声明的私有(private)字段?

spring-boot - Spring Boot - 使用 Flyway 和 H2 数据库进行测试

java - Spring Boot项目中如何自动测试是否使用了Ehcache

java - Axon 如何在 saga 中捕获异常

angular - JHipster : Receive 401 Unauthorized when making API call to microservice

java - 构造函数 SimpleCommandBus() 不可见 -Axon

ruby-on-rails - cucumber 测试停止