Shows the usage of the NServiceBus.
package.
Prerequisites for uniform session testing functionality
The approach shown here works with the NServiceBus.
NuGet package version 2.2.0 or above. Install the NServiceBus.
NuGet package.
The fluent-style test APIs have been deprecated. See the Testing Upgrade Guide for more information.
Testing services
Construct the service under test with an instance of TestableUniformSession
. Call the methods being tested and make assertions about the messages sent and published.
var session = new TestableUniformSession();
var service = new SomeService(session);
service.DoTheThing();
Assert.AreEqual(1, session.SentMessages.Length);
Testing together with IMessageSession
For tests including code paths using both IMessageSession
and IUniformSession
, the TestableUniformSession
can also wrap a TestableMessageSession
:
var messageSession = new TestableMessageSession();
// pass the message session to the TestableUniformSession:
var uniformSession = new TestableUniformSession(messageSession);
var sharedComponent = new SharedComponent(uniformSession);
var myService = new MyService(sharedComponent);
myService.Start(messageSession);
Assert.AreEqual(1, messageSession.PublishedMessages.Length);
Testing a handler
Construct the handler under test with an instance of TestableUniformSession
.
var handlerContext = new TestableMessageHandlerContext();
// pass the handler context to TestableUniformSession:
var uniformSession = new TestableUniformSession(handlerContext);
var handler = new SomeMessageHandler(new SharedComponent(uniformSession));
await handler.Handle(new SomeEvent(), handlerContext);
Assert.AreEqual(1, uniformSession.SentMessages.Length);
Testing a saga
Construct the saga under test with an instance of TestableUniformSession
.
var handlerContext = new TestableMessageHandlerContext();
var uniformSession = new TestableUniformSession(handlerContext);
var saga = new SomeSaga(uniformSession);
saga.Handle(new SomeMessage(), handlerContext);
Assert.AreEqual(1, uniformSession.PublishedMessages.Length);