1
는 다음 클래스 상상 :로컬 인스턴스로 메소드를 테스트하는 방법은 무엇입니까?
class ClassToBeTested{
private IClassA a;
private IClassB b;
public ClassToBeTested(IclassA a, IClassB b)
{
this.a = a;
this.b = b;
}
public void MethodToBeTested()
{
//...
var c = new ClassC(a, b);
c.doSomeThing();
//...
}
}
을 그리고 MethodToBeTested
에 대한 몇 가지 단위 테스트를 수행합니다. 그러나 나는 의존성 주입을하지 않고 moq ClassC
객체로가는 길을 찾을 수 없다. 메서드 시그니처를 변경하고 ClassC
을 매개 변수로 전달하고 싶지 않습니다.
단위 테스트 방법은이 방법이 있습니까?
'ClassC'를 반환하는 가상 메소드를 만들 수 있습니다. [테스트 할 수없는 테스팅] (https://contrivedexample.com/2016/11/26/testing-the-un-testable/) – Crowcoder
속성 주입을 할 수 있고 yout의'ClassC' 속성을 만들 수 있습니다. ClassToBeTested' –
의존성 주입을 사용합니다.하지만 그렇게하고 싶지 않고 VS Enterprise에 액세스 할 수 있다면 가짜를 사용하고 ClassC와 그 멤버를 가짜로 사용할 수 있습니다. 이것은 사용중인 Type에 대한 소스 제어가 없을 때 편리합니다. 귀하의 경우에는 DI를 권하고 싶습니다. 테스트를하고있는 클래스가 밀접하게 결합되어 있기 때문에 쉽지 않은 경우 리팩토링을해야합니다. (테스트에서 디자인을 변경해야한다는 메시지가 나타납니다) – Igor