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