问题描述
我正在尝试使用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中还有更多信息。