2009-12-15 1 views
3

여러 번 실행했지만 결코 좋은 답변을 찾지 못했습니다. 내가 한 가지 방법은 같은 클래스에 다른 호출 다음, 같은 클래스가 있다고 가정 : 장치에Rhino Mocks를 사용하여 "셀프 조롱"을합니다.

public class Foo 
{ 
    public int Bar() 
    { 
     if (Baz()) 
     { 
      return 1; 
     } 
     else 
     { 
      return 2; 
     } 
    } 

    public virtual bool Baz() 
    { 
     // behavior to be mocked 
    } 
} 

내가 원하는이 바즈의 반환 값에 따라() 메소드 바의 동작을 테스트(). Baz()가 다른 클래스에 있다면 PartialMock을 호출하여 해당 클래스에 조롱 행위를 설정할 수 있지만 PartialMock이 테스트 클래스 자체에서 사용될 때는 작동하지 않는 것처럼 보입니다. 이 작업을 수행하는 쉬운 방법이 있습니까? 내가 뭘 놓치고 있니?

저는 Rhino Mock 3.5 및 .NET 2.0을 사용하고 있습니다.

답변

3

스텁을 사용하여 Baz 메소드를 조롱 할 수 있습니다. .NET 3.5를 사용하는 경우 lambdas를 사용하지만 .NET 2.0을 사용하면 다음 예제와 같이 익명의 대리자를 사용하게됩니다.

Foo f = MockRepository.GenerateStub<Foo>(); 
// lambda: 
// f.Stub(x => x.Baz()).Return(true); 
// anonymous delegate: 
f.Stub(delegate(Foo x) { return x.Baz(); }).Return(true); 
Console.WriteLine(f.Bar()); 
+0

나는 그것을 시험해보고 광고 한 것과 똑같이 작동합니다. 감사! –