2015-12-31 73 views
0

我可以獲取如何測試是否從給定處理程序發佈事件的示例。測試事件是否從處理程序發佈

  var cmd = new Catalogue() 
      { 
       CatalogueCode = "", 
       CatalogueType = "", 
       CustomerSegmentCode = "", 
       DisplayName = "", 
       EffectiveDate = null, 
       Products = null 
      }; 
      Test.Handler(bus => new CatalogueAddedCommandHandler(bus)) 
       .ExpectPublish<ICatalogue>(e => e.CatalogueCode == cmd.CatalogueCode).OnMessage(cmd); 

當我調試測試用例時,它顯示在Test.Handler中找不到接口。

+0

你可以與我們分享消息處理程序代碼嗎? – Sabacc

+0

你想測試活動是否一般發佈?或從一個處理程序專門? –

+0

需要檢查它是否從一個處理程序發佈 –

回答

0

我認爲你需要調用Test.Initialize();

您可以找到的文檔上the Particular docs website

UPDATE:

using NServiceBus; 
    using NServiceBus.Testing; 
    using NUnit.Framework; 

    [TestFixture] 
    public class Tests 
    { 

     [Test] 
     public void Run() 
     { 
      Test.Initialize(c => c.Conventions().DefiningEventsAs(t => t == typeof (ICatalogue))); 

      var cmd = new Catalogue() 
      { 
       CatalogueCode = "TEST" 
      }; 
      Test.Handler<CatalogueAddedCommandHandler>() 
       .ExpectPublish<ICatalogue>(e => e.CatalogueCode == cmd.CatalogueCode) 
       .OnMessage(cmd); 

     } 
    } 

    public interface ICatalogue 
    { 
     string CatalogueCode { get; set; } 
    } 

    public class Catalogue 
    { 
     public string CatalogueCode { get; set; } 
    } 

    public class CatalogueEvent : ICatalogue 
    { 
     public string CatalogueCode { get; set; } 
    } 

    public class CatalogueAddedCommandHandler : IHandleMessages<Catalogue> 
    { 
     public IBus Bus { get; set; } 

     public void Handle(Catalogue message) 
     { 
      Bus.Publish<ICatalogue>(e => e.CatalogueCode = message.CatalogueCode); 
     } 
    } 

這是否幫助?

+0

我嘗試使用Test.Initialize()方法,但沒有爲我工作。我想檢查發佈消息不回覆。 –

相關問題