public async Task persistence_uow_retreive_bag() { var bag = new ContextBag(); bag.Set("test", "test"); var context = new Moq.Mock <IIncomingLogicalMessageContext>(); var next = new Moq.Mock <Func <Task> >(); var builder = new Moq.Mock <IBuilder>(); var uow = new FakeUnitOfWork(); builder.Setup(x => x.BuildAll <IApplicationUnitOfWork>()).Returns(new IApplicationUnitOfWork[] { uow }); context.Setup(x => x.MessageId).Returns("1"); context.Setup(x => x.Message).Returns(new LogicalMessage(new NServiceBus.Unicast.Messages.MessageMetadata(typeof(object)), new object())); context.Setup(x => x.Extensions).Returns(bag); context.Setup(x => x.Builder).Returns(builder.Object); context.Setup(x => x.Headers).Returns(new Dictionary <string, string>()); context.Setup(x => x.MessageHeaders) .Returns(new Dictionary <string, string> { [Headers.MessageIntent] = MessageIntentEnum.Send.ToString() }); _persistence.Setup(x => x.Remove("1", uow.GetType())).Returns(Task.FromResult(bag)); await _uow.Invoke(context.Object, next.Object); next.Verify(x => x(), Moq.Times.Once); string test; Assert.True(uow.Bag.TryGet <string>("test", out test)); Assert.AreEqual("test", test); _persistence.Verify(x => x.Save("1", uow.GetType(), bag), Moq.Times.Once); _persistence.Verify(x => x.Clear("1"), Moq.Times.Once); }