2011-07-28 21 views
4

2011年5月21日の最新のNSubstituteリリース1.1.0をダウンロードしました。このリリース以前はNSubはoutパラメータをサポートしていなかったようです。中間リリースを通じてサポートを提供するためにいくつかの作業が行われているようです:NSub Google Group'out'パラメータを模擬する方法は?

だから、私はすべての作品を稼働させるのに少し問題があります。私はここでDirectoryInfo

を模擬するためにSystemWrapperを使用していますことは、私のインターフェイスです:

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); 
} 
+0

@ブロンマスキーの答えは正しいです。これに対するサポートは2011年7月現在ではリリースされていません。この変更により、すぐに1.2リリースを予定しています。 –

+0

ありがとう、@デイビッド...次のリリースを楽しみにしています。 – IAbstract

+1

FYI、NSubstitute 1.2は、[設定と照会パラメータ](http://nsubstitute.github.com/help/setting-out-and-ref-arguments/)の基本サポートとともにリリースされました。遅延のお詫び –

答えて

2

私はあなたが1.1でリリースされたが、その後行われたを探している実装を信じていません(Ref and out support commit )。あなたはおそらくコードを引っ張って自分で構築する必要があります。

関連する問題