4

我已经下载了最新的 NSubstitute 版本,1.1.0,2011 年 5 月 21 日。在此版本之前,NSub 似乎不支持 out 参数。似乎已经完成了一些工作以通过中间版本提供支持:NSub Google Group

所以,我在尝试让所有部分都正常工作时遇到了一些麻烦。我正在使用SystemWrapper来模拟 DirectoryInfo

这是我的界面:

    public interface INetworkPath
    {
        void SetPath(string NetworkPath);
        bool TryGetDirectoryInfo(out IDirectoryInfoWrap DirectoryInfo);
    }

...和测试:

public void SetNetworkPath_SetDirectoryInfo()
{
    var netPath = Substitute.For<INetworkPath>();
    netPath.SetPath("SomeNetworkPath");
    IDirectoryInfoWrap DirectoryInfo;

    netPath.TryGetDirectoryInfo(out DirectoryInfo)
           .Returns(d => {   // cannot convert lambda expression to type bool because it is not a delegate type
               d[1] = Substitute.For<IDirectoryInfoWrap>();  //  d[1] is read only
               return true;
           });

    Assert.IsNotNull(DirectoryInfo);
}

有没有办法从 INetworkPath 接口模拟 out 参数?

更新

尝试了以下方法:虽然它可以编译,但DirectoryInfo返回 null:

[Test]
public void SetNetworkPath_SetDirectoryInfo()
{
    var netPath = Substitute.For<INetworkPath>();
    netPath.SetPath("SomeNetworkPath");
    IDirectoryInfoWrap DirectoryInfo;

    netPath.TryGetDirectoryInfo(out DirectoryInfo)
           .Returns(d => { 
               d = (CallInfo)Substitute.For<IDirectoryInfoWrap>();
               return true;
           });

    Assert.IsNotNull(DirectoryInfo);
}
4

1 回答 1

2

我不相信您正在寻找的实现是随 1.1 发布的,但后来完成了(Ref 和 out support commit)。您可能必须提取代码并自己构建它。

于 2011-07-28T16:41:41.140 回答