2011-08-17 5 views

답변

0

인터페이스 유형에서 스텁을 시도 했습니까? sub는 생성자 삽입 또는 메소드 입력 매개 변수를 통해 전달 될 수 있습니다. 예를 들어 GetFolderPath 메서드를 포함하여 IEnvironment 인터페이스를 만듭니다. 이미이 작업을 수행하는 방법을 이미 알고 있다면 자유롭게 진행하십시오. 그렇지 않은 경우, 다음은 Environment 클래스에서 스텁하는 방법을 보여줍니다.

public class MyEnvironment : Environment, IEnvironment 
{ 
    public string GetFolderPath(Environment.SpecialFolder folder) 
    { 
    return base.GetFolderPath(folder); 
    } 
} 

매개 변수로하여 메소드 또는 클래스 생성자의 스텁을 전달합니다 :

public interface IEnvironment 
{ 
    string GetFolderPath(Environment.SpecialFolder folder); 
} 

다음, 그루터기를 작성 (그래서 나와 함께 곰, 내 전화에 입력하고있다)

public void MyMethod(IEnvironment env) 
{ 
    var path = env.GetFolderPath(): 
} 

테스트하려면 모의 유형 또는 Mole MyEnvironment.GetGolderPath를 만드십시오. 성능상의 이유 때문에 모의 (mol)를 만드는 것이 바람직합니다. 가짜 형식은 단순히 기본 형식을 호출하는 대신 값을 반환합니다. 그 스텁은 어느 쪽이든 필요한 것이므로 다른 테스트를 위해 재사용 할 수 있으므로 모의 작업을 할 수 있습니다.

+0

그러나 제작 코드에는 환경 인스턴스를 설정할 수있는 기능이 없습니다. 그것은 Moles없이 할 수 있습니다, Moq 또는 다른 것을 사용하십시오. –

+0

코드가 이미 환경 클래스를 스텁한다고 생각하지 않습니다. 따라서 리팩토링을 권장합니다. 그렇습니다. 물론, Moles 없이는 할 수 있고해야합니다. 스텁의 목적은 모의 유형을 테스트중인 코드에 전달하는 방법을 제공하는 것입니다. –