1
我有这样的代码来模拟一个Rebus MessageContext的模拟卤面消息上下文的需要交易
IBus fakeBus;
IMessageContext messageContext;
[TestInitialize]
public void TestInitialize()
{
fakeBus = new FakeBus();
var mock = new Mock<IMessageContext>();
mock.Setup(m => m.ReturnAddress).Returns("queuename");
mock.Setup(h => h.Headers).Returns(new Dictionary<string, object>());
mock.Setup(m => m.Items).Returns(new Dictionary<string, object>());
mock.Setup(m => m.RebusTransportMessageId).Returns(Guid.NewGuid().ToString());
messageContext = mock.Object;
var fakeContext = FakeMessageContext.Establish(messageContext); // error here
}
但最后一行返回下面的堆栈跟踪。我在这里错过了什么?
旁注:我仍在使用Rebus 0.84。
结果堆栈跟踪:
at Rebus.MessageContext.Establish(IMessageContext messageContext, Boolean overwrite)
at Rebus.Testing.FakeMessageContext.Establish(IMessageContext messageContext)
at MyApp.Messaging.Tests.Handlers.RegisterPaymentCallbackTests.TestInitialize() in C:\CUT.Tests\Handlers\RegisterPaymentCallbackTests.cs:line 57
Result Message: Initialization method MyApp.Tests.Handlers.RegisterPaymentCallbackTests.TestInitialize threw exception. System.InvalidOperationException: Could not find a transaction context. There should always be a transaction context - though it might be a NoTransaction transaction context..
没有“.None()”方法。但我想这样做会和Rebus.Bus.TransactionContext.Set(new Rebus.Bus.NoTransaction())一样。 – dampee
@dampee你是否得到这个工作?我也使用0.84,但.None()是内部的,所以我不能使用。好奇你的解决方案 – Steven