2009-01-30 5 views
0

이 함수에 대한 테스트 설정이 이미 있지만 가장 좋은 방법인지 알고 싶습니다. 나는이 같은 방법이 있습니다열거 형을 사용하는 메서드를 테스트하는 방법

public static string RunTableInfoCommand(IMapinfoWrapper wrapper, 
             TableInfoEnum infoToReturn) 
{ 
    //pass the int value of infoToReturn to underlying COM object eg wrapper. 
} 

TableInfoEnum이 (단축 버전)과 같다 : 나는 COM 개체로 열거를 통과하면

public enum TableInfoEnum 
{ 
    TAB_INFO_NAME = 1, 
    TAB_INFO_NUM = 2, 
    TAB_INFO_TYPE = 3, 
    TAB_INFO_NCOLS = 4, 
    TAB_INFO_MAPPABLE = 5, 
    TAB_INFO_READONLY = 6, 
    TAB_INFO_TEMP = 7 
} 

그것을 열거에 따라 서로 다른 문자열 결과를 반환합니다 값. 예를 들어

TAB_INFO_NAME = "Water_Mains" 
TAB_INFO_NUM = "1" 

COM 개체는 항상 열거 값에 따라 단지 다른 값 문자열을 반환합니다. 당신이 테스트 어떻게, 내가 뭔가를 놓친 것 같은

public void RunTableInfoCommandPassingTableNumberShouldReturnExpectedName() 
{ 
    string ExpectedCommand = "TableInfo(1,{0})".FormatWith((int)TableInfoEnum.TAB_INFO_NAME); 

    mockmapinfo.Expect(m => m.Evaluate(ExpectedCommand)) 
      .Returns("Water_Mains"); 

    string name = Table.RunTableInfoCommand(mockmapinfo.Object, 
                1, 
                TableInfoEnum.TAB_INFO_NAME); 

    Assert.AreEqual("Water_Mains", name); 
} 

그것은하지만 난 그냥 작업 기분이 :

어떻게 지금까지 내가 이런 시험이, 내 RunTableInfoCommand가 제대로 작동하는지 테스트 것 모든 다른 enum 유형.

답변

2

정확하게 이해할 경우 테스트중인 메서드는 enum 값을 COM 개체로 전달하고 COM 개체가 반환하는 문자열을 반환한다고 가정합니다. 따라서이 테스트의 목적은 메서드가 COM 개체와 올바르게 통신하는지 확인하는 것입니다.

COM 개체를 조롱하여 각 열거 형 값에 대해 예상되는 문자열을 반환 한 다음 메서드에 전달합니다.

+0

다음과 같은 37 개의 열거 형 값이 있습니다. ( –

+0

그런 다음 조롱 한 COM 개체로 Map을 사용하십시오. – moffdub

0

그럼 아마 루프를 만들 수 있습니다. 이것은 모든 열거 형을 거쳐 인쇄합니다. 완전히 자동으로 원한다면 모든 올바른 값을 배열에 넣고 비교할 수있게해야합니다. 어느 쪽이든, 당신이 놓친 중요한 부분이 반복문처럼 보입니다.

public CheckAllEnumValues() { 
      // somehow construct mockmapinfo here 

      TableInfoEnum[] values = Enum.GetValues(typeof(TableInfoEnum)); 
      foreach(TableInfoEnum v in values) { 
        string result = RunTableInfoCommand(mockmapinfo.Object, v); 
        Console.WriteLine(Enum.GetName(typeof(TableInfoEnum), v) + ": " + result); 
      } 
    } 
관련 문제