text: Q:
  
  How to create unit tests for NServiceBus Saga?
  
  I am trying to follow this article (http://blog.zoolutions.se/post/2010/04/01/Conquering-NServiceBus-part-4-e28093-Testing.aspx) to create unit test for my nservicebus saga project
  See the following code, not sure why it always complain
  anyone know how can i fix it?
  (I am using nservice bus 2.0)
  public class ReportSaga : Saga<ReportSagaData>,
                            IAmStartedByMessages<RequestReportMessage>,
                            IHandleMessages<PollingReportStatusMessage>
  {
  // implementation
  }
  
  [TestFixture]
      public class ReportSaga_HandleRequestReportMessageTests
      {
          [TestFixtureSetUp]
          public void SetUp()
          {
              var assemblies = new[]
                           {
                               typeof (ReportSaga).Assembly,
                               typeof (RequestReportMessage).Assembly,
                               typeof (PollingReportStatusMessage).Assembly,
                               Assembly.Load("NServiceBus"),
                               Assembly.Load("NServiceBus.Core")
                           };
  
              Test.Initialize(assemblies);
          }
  
          [Test]
          public void HandleRequestReportMessageTests()
          {
  
              Test.Handler<ReportSaga>()
                  .OnMessage<RequestReportMessage>(x =>
                  {
                      x.Id = 1234;
                      x.ReportDate = DateTime.Now;
                  });
  
          }
      }
  
  Test 'UnitTests.ReportSaga_HandleRequestReportMessageTests.HandleRequestReportMessageTests' failed: System.ArgumentException : GenericArguments[0], 'ReportSagaData', on 'NServiceBus.IMessageHandler`1[T]' violates the constraint of type 'T'.
    ----> System.TypeLoadException : GenericArguments[0], 'ReportSagaData', on 'NServiceBus.IMessageHandler`1[T]' violates the constraint of type parameter 'T'.
      at System.RuntimeType.ValidateGenericArguments(MemberInfo definition, RuntimeType[] genericArguments, Exception e)
      at System.RuntimeType.MakeGenericType(Type[] instantiation)
      at NServiceBus.Testing.Test.Handler[T](T handler)
      at NServiceBus.Testing.Test.Handler[T]()
      ReportSaga_HandleRequestReportMessageTests.cs(34,0): at UnitTests.ReportSaga_HandleRequestReportMessageTests.HandleRequestReportMessageTests()
      --TypeLoadException
      at System.RuntimeTypeHandle.Instantiate(RuntimeTypeHandle handle, IntPtr* pInst, Int32 numGenericArgs, ObjectHandleOnStack type)
      at System.RuntimeTypeHandle.Instantiate(Type[] inst)
      at System.RuntimeType.MakeGenericType(Type[] instantiation)
  
  0 passed, 1 failed, 0 skipped, took 1.11 seconds (NUnit 2.5.5).
  
  A:
  
  Exactly as Udi said, However the syntax should look something like this:
  [TestFixture]
  public class ReportSaga_HandleRequestReportMessageTests
  {
      [TestFixtureSetUp]
      public void SetUp()
      {
          var assemblies = new[]
                       {
                           typeof (ReportSaga).Assembly,
                           typeof (RequestReportMessage).Assembly,
                           typeof (PollingReportStatusMessage).Assembly,
                           Assembly.Load("NServiceBus"),
                           Assembly.Load("NServiceBus.Core")
                       };
  
          Test.Initialize(assemblies);
      }
  
      [Test]
      public void HandleRequestReportMessageTests()
      {
  
          var message = new RequestReportMessage { Id = 1234, ReportDate = DateTime.Now };
  
          Test.Saga<ReportSaga>()
              .ExpectPublish<PublishMessage>(e => e.SomePropertyOfPublishMethod == "value")
              .When(x => x.Handle(message));
  
      }
  }
  
  A:
  
  In order to test a saga, you need to call Test.Saga rather than Test.Handler.
  
  