4

最新の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パラメーターをモックアウトする方法はありますか?

アップデート

次のことを試しました:コンパイルされますが、 DirectoryInfonullを返します:

[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);
}
4

1 に答える 1

2

あなたが探している実装が1.1でリリースされたとは思いませんが、後で実行されました(Ref and out support commit)。おそらく、コードをプルして自分でビルドする必要があります。

于 2011-07-28T16:41:41.140 に答える