[英]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.