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