使用 NSubstitute 模拟大众交通的 GetRetryAttempt()

问题描述 投票:0回答:1

我正在尝试模拟 Masstransit 的 GetRetryAttempt() 方法以使用 NSubstitute 返回一些值,但似乎不起作用。没有收到任何错误,但 GetRetryAttempt() 始终返回 0 而不是 2。

测试

var context = Substitute.For<ConsumeContext<FakeCommand>>();
var consumeRetryContext = Substitute.For<ConsumeRetryContext>();
consumeRetryContext.RetryAttempt.Returns(2);
context.TryGetPayload(out consumeRetryContext).Returns(true);
context.GetRetryAttempt().Returns(consumeRetryContext.RetryAttempt);

申请代码

public async Task Consume(ConsumeContext<T> context)
{
    ......
    var retryAttempt = context.GetRetryAttempt();
}
c# xunit masstransit nsubstitute
1个回答
0
投票

您没有正确模拟重试上下文。这有效

var context = Substitute.For<ConsumeContext<FakeCommand>>();
var consumeRetryContext = Substitute.For<ConsumeRetryContext>();
consumeRetryContext.RetryAttempt.Returns(2);
context
   .TryGetPayload(out Arg.Any<ConsumeRetryContext>())
   .Returns(result =>
   {
       result[0] = consumeRetryContext;
       return true;
   });
© www.soinside.com 2019 - 2024. All rights reserved.