2011-06-01 39 views
2

我曾经有过这样的测试,它通过就好了(佐贺是完整的,一旦所有三个消息已经被处理。如何创建单元测试NServiceBus佐贺当佐贺有一个以上的处理器

 Test.Saga<TestSagaHandler>(sagaId) 
      .When(x => 
      { 
       x.Handle(new TestSagaStartMessageOne 
       { 
        Id = sagaId 
       }); 
       x.Handle(new TestSagaStartMessageTwo 
       { 
        Id = sagaId 
       }); 
       x.Handle(new TestSagaNonStartingMessage 
       { 
        Id = sagaId 
       }); 
      }); 
      .AssertSagaCompletionIs(true); 

我现在想打出来的TestSagaNonStartingMessage到自己的处理程序,并做了以下内容:

 Test.Saga<TestSagaHandler>(sagaId) 
      .When(x => 
      { 
       x.Handle(new TestSagaStartMessageOne 
       { 
        Id = sagaId 
       }); 
       x.Handle(new TestSagaStartMessageTwo 
       { 
        Id = sagaId 
       }); 
      }); 

     Test.Saga<TestSagaHandlerSingleMessage>(sagaId) 
      .When(x => 
       x.Handle(new TestSagaNonStartingMessage 
       { 
        Id = sagaId 
       }) 
      ) 
     .AssertSagaCompletionIs(true); 

然而,处理TestSagaNonStartingMessage时 - 佐贺数据没有从以前的处理程序持久化了

我是否存在持续性问题,还是测试构建得不好?

回答

1

其他读者参考,合适的测试结构应该类似于:

Test.Saga<TestSagaHandler>(sagaId) 
     .When(x => 
     { 
      x.Handle(new TestSagaStartMessageOne { Id = sagaId }); 
      x.Handle(new TestSagaStartMessageTwo { Id = sagaId }); 
     }) 
     .When(x => 
      x.Handle(new TestSagaNonStartingMessage { Id = sagaId }) 
     ) 
     .AssertSagaCompletionIs(true); 

作为乌迪指示的,链中的“当”条款在一起。

此外,为了从试验导出进一步值,考虑引入例外,如ExpectSend<>ExpectPublish

参考:http://docs.particular.net/nservicebus/testing/

+1

哦,我现在看来是多么明显,现在4年后=)谢谢澄清=) – 2015-11-13 14:37:30

3

该测试的构造不正确 - 请查看制造样品中的测试项目以了解其结构。简短的答案是连锁第二。当(...)在第一个之后。

+0

由于乌迪,感谢! – 2011-06-03 04:27:33

相关问题