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