首页 > 解决方案 > 返回委托函数 NSubstitute

问题描述

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

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

请问这可能吗?谢谢

标签: c#nsubstitute

解决方案


您可以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 文档中有更多信息。


推荐阅读