Axon 夾具注入在 @CommandHandler 注解的方法中失?。嬙旌瘮党猓?/h1>
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(),只是為了檢查對注入資源的調用。
正如我所提到的,該代碼在我運行時有效?!癱ustomerService”是通過 a?SpringBeanParemeterResolver
(我將其定義為 spring bean)注入的
單獨運行它們,結果是相同的: testCreation() 通過,而 testUpdate() 失敗并顯示錯誤消息No resource of type [CustomerService] has been registered
對于這兩種情況,CustomerService 資源都通過 de @Before 方法注冊到 Fixture 中。
添加回答
舉報