返回委托函数NSubstitute

问题描述

我正在尝试使用NSubstitute测试委托函数

_myMock.CallDelegateIfKeyMissing(Arg.Any<string>,Arg.Any<Func<Task<string>>>())
.Returns(
   //The results of the delegate function "Arg.Any<Func<Task<string>>>"
);

这可能吗?谢谢

解决方法

您可以从Func<Task<string>>内部访问Returns参数并调用它:

_myMock
    .CallDelegateIfKeyMissing(Arg.Any<string>(),Arg.Any<Func<Task<string>>>())
    .Returns(
        x => x.Arg<Func<Task<string>>>().Invoke()
    );

var result = _myMock.CallDelegateIfKeyMissing("hi",() => Task.FromResult("world"));

Assert.Equal("world",result.Result);

NSubstitute documentation中还有更多信息。