当前位置: 首页 > 知识库问答 >
问题:

在AxonFramework中,是否可以期待来自非Axon类的分派命令

公羊曜灿
2023-03-14

假设我有一些不是axon类的类(例如,Saga或agrgregate),如果我想让它分派命令,我可以使用command gateway,但问题出在这里。我想编写单元测试,以确保这个非Axon类已经发送了命令。因此,如果是saga或聚合,我可以使用fixture然后给出命令或事件,但是否也可以将fixture与这些非Axon类一起使用

class MyService {
    //...
    lateinit var commandGateway: CommandGateway
    fun doSomething(command: doSomethingCommand){
        commandGateway.send(command)
    }
}

class MyServiceTest {
    //...
    @Test
    fun doSomething_ShouldDispatchDoSomethingCommand(){
        // expect dispatch command from non axon-class
    }
}

共有1个答案

姬泰
2023-03-14

正如您所注意到的,Axon框架为聚合和SAGA提供了测试夹具,但没有指定任何额外的选项。AggregateTestFixture确实提供了一个类似于您所要使用的方法,即AggregateTestFixture#RegisterAnnotatedCommandHandler。但是,这是为了验证包含@commandhandler注释方法的组件,而不是为了验证分派。

因此,老实说,我认为最直接的方法是模拟或监视commandgateway/commandbus来进行验证。

 类似资料:
  • 问题内容: 我在基类中定义了一个静态方法,我想在其子类中重写此方法,这可能吗? 我尝试了一下,但是没有按预期工作。当我创建类B的实例并调用其callMe()方法时,将调用类A中的静态foo()方法。 问题答案: 静态方法调用在编译时解决(不动态分配)。 给

  • 为下面的代码生成的字节代码在类中创建一个字段。当为可变字段赋值时,原始委托不会更改。 有没有一种方法可以在运行时更改委托,同时保持实现? 该示例取自https://kotlinlang.org/docs/reference/delegation.html文档并经过编辑。

  • 问题内容: 基本路线是这样的: 是否可以命名该路由并在任何模板中使用它,以便可以像这样使用它: 灵感来自Django :) 问题答案: 没有开箱即用的机制。但是,您可以模仿Django的样式:定义文件,该文件将包含URL数组。首先开始: myviews.js urls.js 现在在 app.js (或任何主文件)中,您需要将URL绑定到Express。例如这样: app.js 现在,您可以定义自定

  • 我现在正在学习,我被赋予了一个简单的(我以为是这样的)任务。我必须让这段代码工作(我不能修改它): 我认为MousePressListener应该是FunctionalInterface,但它不能扩展MouseListener。有没有办法解决这个问题,或者我是从坏的方面来处理它?

  • 好的,目标是:我有一个应该发送邮件的服务,如果失败,我的Kafka制作人将把这封邮件发送到Kafka主题。第二个程序每两分钟查看一次主题,应该只使用一条消息(最早的一条),然后重试发送,如果失败,程序应该将此消息返回主题。 我已经有了一个消费者,但问题是,它会消耗我直到现在还没有使用消费者的所有消息。但我希望他只吃最老的,他以前从未吃过。 这是我的实际消费者: “CustMessage”是我为测试

  • C#中的许多内置IO函数是非阻塞的,也就是说,它们在等待操作完成时不会抓住线程不放。 例如,返回的是非阻塞的。 它不只是暂停它正在使用的线程,它实际上释放了线程,以便其他进程可以使用它。 我假设这是通过调用OS来实现的,这样OS在检索到文件时就回调到程序,而程序不必浪费一个线程来等待它。 是否可以自己创建一个非阻塞的异步任务? 执行类似的操作显然不会像那样释放当前线程。 我意识到Hibernate