4
我已经下载了最新的NSubstitute发布,1.1.0,2011年5月21日。在此版本之前,似乎NSub不支持输出参数。看来已经做了一些工作来通过中间版本提供支持:NSub Google Group。如何模拟'out'参数?
所以,我试图让所有的部分工作有点麻烦。我使用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接口输出参数的方式?
更新
尝试了以下内容:虽然它编译,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);
}
@ Bronumski的回答是正确的;对此的支持截至2011年7月尚未发布。我们希望在发生这种变化后很快就会发布1.2版本。 –
谢谢,@David ...期待下一个版本。 – IAbstract
仅供参考,NSubstitute 1.2已发布,并提供[放样和参考参数]的基本支持(http://nsubstitute.github.com/help/setting-out-and-ref-arguments/)。对延迟抱歉。 –