最新のNSubstituteリリース1.1.0、2011年5月21日をダウンロードしました。このリリースより前は、NSubはパラメータをサポートしていなかったようです。中間リリースであるNSubGoogleGroupを通じてサポートを提供するために、いくつかの作業が行われたようです。
ですから、すべてのピースを機能させるのに少し問題があります。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);
}