2011-07-28 3 views
4

2011 년 5 월 21 일 최신 NSubstitute 릴리즈 1.1.0을 다운로드했습니다.이 릴리스 이전에는 NSub가 매개 변수를 지원하지 않는 것으로 보입니다. 중급 릴리스 인 NSub Google Group을 통해 지원을 제공하기 위해 일부 작업이 수행 된 것으로 보입니다.'out'매개 변수를 조롱하는 방법?

그래서 모든 작업을 수행하는 데 약간의 문제가 있습니다. INetworkPath 인터페이스에서 출력 매개 변수를 조롱하는 방법

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

있나요 :

public interface INetworkPath 
    { 
     void SetPath(string NetworkPath); 
     bool TryGetDirectoryInfo(out IDirectoryInfoWrap DirectoryInfo); 
    } 

... 시험 : 나는의 DirectoryInfo

여기

을 조롱 SystemWrapper을 사용하고 나의 인터페이스입니다 ?

업데이트

시도 다음은 컴파일하지만, 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 월 현재 출시되지 않았습니다. 이번 변경으로 곧 출시 될 예정입니다. –

+0

감사합니다, @ David ... 다음 출시를 기다리고 있습니다. – IAbstract

+1

FYI, NSubstitute 1.2는 [설정 및 참조 매개 변수] (http://nsubstitute.github.com/help/setting-out-and-ref-arguments/)에 대한 기본 지원과 함께 릴리스되었습니다. 지연에 대해 사과드립니다. –

답변

2

난 당신이 1.1 출시하지만 이후에 이루어졌다 찾고있는 구현을 믿지 않는다 (Ref and out support commit). 코드를 작성하고 직접 작성해야합니다.