2011-07-28 68 views
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); 
} 
+0

@ Bronumski的回答是正确的;对此的支持截至2011年7月尚未发布。我们希望在发生这种变化后很快就会发布1.2版本。 –

+0

谢谢,@David ...期待下一个版本。 – IAbstract

+1

仅供参考,NSubstitute 1.2已发布,并提供[放样和参考参数]的基本支持(http://nsubstitute.github.com/help/setting-out-and-ref-arguments/)。对延迟抱歉。 –

回答