2009-08-05 2 views
4

단위 테스트를 위해 Moq을 사용하고 있습니다. Moq이 작동하도록 명령하면 속성과 메소드를 가상으로 표시해야합니다. 때로는 데이터를 전달하고 생성자에서 속성 값을 설정합니다. 클래스가 기본 클래스에서 상속 된 경우 또는 예기치 않은 동작이 발생할 수 있으므로 constrcutors에 가상 속성을 설정하면 안되는 규칙이 없습니까?Moq 및 가상 속성 및 메서드

답변

6

실제로 문제는 Visual Studio Code Analysis explicitly checks for this입니다.

이 간단한 해결 방법은 비가 상 내부 멤버로 작업을 이동 한 다음 가상 메서드가이를 호출하고 생성자를 호출하는 것입니다. 다음과 같은 내용 :

public class MyClass 
{ 
    public MyClass() 
    { 
     this.DoStuffInternal(); 
    } 

    public virtual void DoStuff() 
    { 
     this.DoStuffInternal(); 
    } 

    internal void DoStuffInternal() 
    { 
     // Interesting stuff happens here 
    } 
}