4 回答

TA貢獻1735條經(jīng)驗 獲得超5個贊
在 Axon 中,聚合接受業(yè)務(wù)命令,這通常會產(chǎn)生與業(yè)務(wù)領(lǐng)域相關(guān)的事件——領(lǐng)域事件。CustomerService
首先,您不應(yīng)該將邏輯委托給某些外部服務(wù)。

TA貢獻1921條經(jīng)驗 獲得超9個贊
首先,我想指出伊萬·杜加利奇(Ivan Dugalic)的觀點非常好。聚合應(yīng)該處理業(yè)務(wù)邏輯,而不是將其提供給服務(wù)。您可能會考慮注入域服務(wù),在這方面它本質(zhì)上應(yīng)該被視為狀態(tài)機。
除了設(shè)計問題之外,眼前的問題仍然很奇怪。您已經(jīng)正確定義了一個CustomerService
模擬,并且重要的是Fixture
使用該registerInjectableResource
方法將其注冊到了。
您是否嘗試過分別運行testCreation
和testUpdate
測試?如果是這樣,您還會遇到同樣的異常嗎?如果后面的問題也得到肯定的回答,我個人需要進行一些調(diào)試才能找出原因CustomerService
:
根本沒有注冊
設(shè)置為
null
,因此不可“注射”在測試周期內(nèi)的任意一處移除
希望以上內(nèi)容能夠指導(dǎo)您找到正確的解決方案 Ernesto!

TA貢獻1809條經(jīng)驗 獲得超8個贊
設(shè)置了固定裝置fixture.givenState(() -> new Customer(id, name, null))
,它應(yīng)該是fixture.given(new CreatedEvent(id, name))

TA貢獻1811條經(jīng)驗 獲得超4個贊
在示例中將其稱為“CustomerService”,就像我可以將其稱為“DomainService”、“ComplexMathDomainCalculationUtils”或“DomainLogicExtractedToAnotherClassBecauseItWasTooBigAndComplexToBeThere”;-)我只是想展示一個依賴注入的示例,為此我使用了一個日志.debug(),只是為了檢查對注入資源的調(diào)用。
正如我所提到的,該代碼在我運行時有效。“customerService”是通過 a?SpringBeanParemeterResolver
(我將其定義為 spring bean)注入的
單獨運行它們,結(jié)果是相同的: testCreation() 通過,而 testUpdate() 失敗并顯示錯誤消息No resource of type [CustomerService] has been registered
對于這兩種情況,CustomerService 資源都通過 de @Before 方法注冊到 Fixture 中。
添加回答
舉報