Как смоделировать NserviceBus SendLocal с помощью Moq - PullRequest
0 голосов
/ 30 октября 2018

context.Verify throwsception: ссылка на объект не установлена ​​для экземпляра объекта

var context = new Mock<IMessagehandlerContext>();

context.Setup(x => x.SendLocal(It.IsAny<object>()))
.Returns(Task.CompletedTask);

context.Verify(b => b.SendLocal(It.IsAny<objec>()), Times.Exactly(1))

1 Ответ

0 голосов
/ 05 ноября 2018

Вместо насмешливого IMessageHandlerContext я бы предложил вам использовать TestableMessageHandlerContext из NServiceBus.Testing nuget package. Ознакомьтесь с документацией здесь .

Пример того, как его использовать, выглядит следующим образом:

[Test]
public async Task ShouldReplyWithResponseMessage()
{
  var handler = new MyReplyingHandler();
  var context = new TestableMessageHandlerContext();

  await handler.Handle(new MyRequest(), context)
    .ConfigureAwait(false);

  Assert.AreEqual(1, context.RepliedMessages.Length);
  Assert.IsInstanceOf<MyResponse>(context.RepliedMessages[0].Message);
}
...