생성자를 호출하는 코드를 테스트 할 때 실제 인스턴스 대신 모의 객체를 만들 수있는 방법이 있습니까? 예를 들어단위 테스트에서 모의 구조 만들기
:
public class ClassToTest
{
public void MethodToTest()
{
MyObject foo = new MyObject();
Console.WriteLine(foo.ToString());
}
}
이 예에서, I는 ClassToTest 인스턴스에 MethodToTest 호출 것 실제로 출력간에 a의 toString() 메소드의 결과 새롭게 확인 유닛 테스트를 만들어야 MyObject의 인스턴스를 생성했습니다.
'ClassToTest'클래스를 실제로 테스트하는 방법을 볼 수 없습니다. 이 메서드를 테스트하면 실제로 'myObject.ToString()'메서드뿐만 아니라 MethodToTest 메서드도 테스트됩니다.
콘솔에서 정적 메서드 WriteLine을 사용하는 것과 비슷한 문제가 있습니다. 이것은 테스트하기 어려울 것입니다. 개인적으로 콘솔과 같은 BCL 클래스를 인스턴스 메소드 WriteLine이있는 클래스로 마무리합니다. WriteLine 클래스는 실제 콘솔을 호출합니다. 그런 다음 테스트에서 조롱 된 래퍼를 삽입하고 이에 대해 주장합니다. –
필자는 테스트에 관계없이 확실히 더 나은 옵션이라고 생각했지만 어떤 경우에는 클라이언트 코드가 'ClassToTest'에서 사용할 객체를 제공하는 것이 좋지 않을 수도 있습니다. '. 또한 ClassToTest에 필요한 데이터가 포함되어 있으면 클라이언트 코드가 적절한 인스턴스를 제공하지 못할 수도 있습니다. 나는 .NET의 클래스 레지스트리를 '오버라이드 (override)'하고 클래스의 구현을 제공 할 수 있기를 바랬다. – Flynn1179