2009-04-22 4 views
1

메서드를 테스트하려고합니다.테스트를 위해 무시합니다

using(proxy = new Proxy()) 
{ 
     proxy.CallService(); 
} 

내가 (TypeMock 사용) 하지만 때문에의 오류가 가짜 객체와 프록시를 교환 : 그 방법 (전화 서비스)에서 메서드 호출이 같은 코드 모양이 있음을 ensrur 할 블록의 끝에 배치 된 가짜 오브젝트. "사용"블록을 제거하고 싶지 않습니다. 감사합니다.

답변

0

면책 조항 : 나는 Typemock
에서 일을 당신이 당신의 가짜 객체를 생성 할 때 Members.ReturnRecursiveFakes에게 를 사용할 수있는 정렬 법 어설 API를 (사용하는 경우 참고 : 이것은 버전 5.2.0의 기본값입니다. 이렇게하면 Dispose 메서드도 자동으로 가짜입니다.

var fake = Isolate.Fake.Instance<Proxy>(Members.ReturnRecursiveFakes); 
Isolate.WhenCalled(() => fake.CallService()).IgnoreCall(); 
Isolate.Swap.NextInstance<Proxy>().With(fake); 

UnderTest classUnderTest = new ClassUnderTest(); 
classUnderTest.MethodUnderTest(); // assuming the Proxy instance is used here. 

Isolate.Verify.WasCalledWithAnyArguments(()=>fake.CallService()); 

나는 존 소총 내가 Dispose 메서드를 호출 할 수 있도록하는 별도의 시험을 만들 것이라고 말에 추가 할 :

그래서 테스트는 다음과 같이 될 것입니다.
각 테스트 방법에서 한 가지를 주장하는 것이 좋은 습관이라고 생각합니다. 테스트가 끝나면 즉시 이유를 알 수 있습니다.

1

모의 개체도 삭제 될 것으로 예상합니다. (TypeMock은 모르지만 다른 조롱하는 프레임 워크에서는 "레코드"단계에서 직접 Dispose을 호출하는 경우가 될 것입니다.) 실제로, 나는 테스트가 잘못되어 있다고 말할 수 있습니다. 프록시 이 처리되고 있음을 확인하고 싶습니다.

0

Dispose()을 호출하기 위해 Proxy 모의을 지시하십시오. 당신이 반사 모의 객체를 사용하는 경우 당신은 자연 모의 객체가 사용하는 블록에 Dispose()에 전화를 걸이

var proxyMock = MockManager.Mock(typeof(Proxy)); 
// set up regular calls to proxy, e.g. 
proxyMock.ExpectCall("CallService"); 
proxyMock.ExpectCall("Dispose"); 

같은 것을 할 필요가있다.

0

확인 가짜 객체는 IDisposable을 구현 :

class FakeObject : IDisposable 
{ 
    public void Dispose() {} 
} 
+0

OP는 TypeMock을 사용하기 때문에 가짜 프록시 클래스가 명시 적으로 없습니다. –

관련 문제