簡體   English   中英

如何模擬“輸出”參數?

[英]How to mock 'out' parameter?

我已經下載了最新的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);
}

我不相信您要查找的實現是在1.1版中發布的,但是此后才完成( Ref and out support commit )。 您可能需要提取代碼並自己構建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM