4 回答
TA贡献1921条经验 获得超9个赞
首先,我想指出伊万·杜加利奇(Ivan Dugalic)的观点非常好。聚合应该处理业务逻辑,而不是将其提供给服务。您可能会考虑注入域服务,在这方面它本质上应该被视为状态机。
除了设计问题之外,眼前的问题仍然很奇怪。您已经正确定义了一个CustomerService
模拟,并且重要的是Fixture
使用该registerInjectableResource
方法将其注册到了。
您是否尝试过分别运行testCreation
和testUpdate
测试?如果是这样,您还会遇到同样的异常吗?如果后面的问题也得到肯定的回答,我个人需要进行一些调试才能找出原因CustomerService
:
根本没有注册
设置为
null
,因此不可“注射”在测试周期内的任意一处移除
希望以上内容能够指导您找到正确的解决方案 Ernesto!
TA贡献1809条经验 获得超8个赞
设置了固定装置fixture.givenState(() -> new Customer(id, name, null))
,它应该是fixture.given(new CreatedEvent(id, name))
TA贡献1811条经验 获得超4个赞
在示例中将其称为“CustomerService”,就像我可以将其称为“DomainService”、“ComplexMathDomainCalculationUtils”或“DomainLogicExtractedToAnotherClassBecauseItWasTooBigAndComplexToBeThere”;-)我只是想展示一个依赖注入的示例,为此我使用了一个日志.debug(),只是为了检查对注入资源的调用。
正如我所提到的,该代码在我运行时有效。“customerService”是通过 a SpringBeanParemeterResolver
(我将其定义为 spring bean)注入的
单独运行它们,结果是相同的: testCreation() 通过,而 testUpdate() 失败并显示错误消息No resource of type [CustomerService] has been registered
对于这两种情况,CustomerService 资源都通过 de @Before 方法注册到 Fixture 中。
添加回答
举报