0

我的問題類似於關於NserviceBus Handler用於測試的DI的問題(Handler)。 作爲一個解決方案,你可以使用下面的語法構造器注入:NServiceBus佐賀單元測試的依賴注入

Test.Handler<YourMessageHandler>(bus => new YourMessageHandler(dep1, dep2)) 

我不能找到一種方法,使用測試佐賀相同的方法。 沒有爲物業注入的支持,這將是這個樣子:

var saga = Test.Saga<MySaga>() 
      .WithExternalDependencies(DependenciesSetUp); 
private void DependenciesSetUp(MySaga saga) 
    { 
     saga.M2IntegrationService = M2IntegrationService.Object; 
     saga.ProcessLogService = ProcessLogService.Object; 
     saga.Log = Log.Object; 
    } 

然而,這種方法需要讓我的依賴公共屬性。我想盡量避免它。

有沒有辦法使用建設依賴注入佐賀測試?

回答

1

可以解決此類似:

有一個具有一個帶參數的構造函數(除了默認的空構造,這是必需的)一個傳奇。

這是您的測試如何看起來像:

Test.Initialize(); 
var injected = new InjectedDependency() {Id = Guid.NewGuid(), SomeText = "Text"}; 
var testingSaga = new MySaga(injected); 
var saga = Test.Saga(testingSaga); 
saga.WhenReceivesMessageFrom("enter code here") 
請問

這對你的工作?

1

是的,它也支持:

 var saga = new MySaga(new MyFirstDep(), new MySecondDep()); 

     Test.Saga(saga) 
      .ExpectSend<ProcessOrder>(m => m.Total == 500) 
      .ExpectTimeoutToBeSetIn<SubmitOrder>((state, span) => span == TimeSpan.FromDays(7)) 
      .When(s => s.Handle(new SubmitOrder 
      { 
       Total = 500 
      })); 
+0

你的答案是正確的爲好,它後來被提交。 – Tonven