2008-09-25 5 views
7

저는 providerbase 클래스에서 상속받은 몇몇 제공자를 C#으로 작성했습니다. 나는 대부분의 조롱하는 프레임 워크가 단지 당신이 인터페이스를 조롱하는 것을 허락 할 것이기 때문에 제공자를 사용하는 테스트를 작성하는 것이 어렵다는 것을 발견했다.인터페이스가 아닌 모의 클래스

providerbase에서 상속 한 공급자에게 호출 할 수있는 방법이 있습니까?

그렇지 않은 경우 제공자 조롱을 구현하는 데 사용할 수있는 패턴이 있습니까?

+2

"공급자"는 ASP.NET 공급자를 말하고 있습니까? –

답변

6

모의 프레임 워크는 가상 멤버가있는 한 클래스를 기반으로 한 모의 객체를 생성 할 수 있어야합니다.

은 또한 대부분의 다른 조롱 프레임 워크 중 하나를이 아무런 문제가 없어야한다, 나는 코뿔소 망신 시켰 너무 클래스를 조롱 수있어 Typemock

+0

흠 ... 나는 NMock을 사용 해왔다. NMock의 제한 사항 인 것처럼 보일 것이다. 일반적으로 조롱하는 데 제한이 없다. 링크를 이용해 주셔서 감사합니다. – lomaxx

6

에서 살펴 봐야 할 수 있습니다.
너무주의 사항 : 클래스를 봉인 할 수 없습니다. 가상 모의 메소드를 표시해야하고 클래스에 인수가없는 생성자가 필요합니다.이 클래스는 보호 될 수 있으며 private은 작동하지 않습니다. (방금 시도해 보았습니다)

조롱 프레임 워크는 클래스에서 상속 받고 해당 유형의 객체를 만드는 클래스를 만들 것입니다. 그래서 생성자가 호출됩니다. 이로 인해 테스트에서 예기치 않은 동작이 발생할 수 있습니다.

1

RhinoMocks 또는 Moq은 인터페이스뿐만 아니라 클래스에 대한 테스트 복식을 작성합니다. 유형은 가상 메소드를 가지고 있거나 추상적이어야합니다. Typemock 격리 장치가이 문제를 해결합니다.

모의하려는 개체가 추상적이어야합니다 (dependency inversion principle).