2015-12-31 75 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()方法,但没有为我工作。我想检查发布消息不回复。 –

相关问题