2010-12-14 4 views
12

나는 단위 테스트 중 하나입니다.단위 테스트에서 가짜 데이터 테이블 추가하기

public void TestLabels() 
{ 

    //Step 1: Creating a mock table with columns exactly like in the real table. 
    DataTable table = new DataTable(); 

    DataRow mydatarow; 
    mydatarow = table.NewRow(); 

    //Step 2: Adding the row as same as the Real Data! 

    mydatarow["Name"] = "Test"; 
    mydatarow["Address"] = "00000 ST."; 
    mydatarow["ZipCode"] = "77665"; 
    mydatarow["Tracking#"] = ""; 

    table.Rows.Add(mydatarow); 

    foreach (DataColumn column in table.Columns) 
    Console.WriteLine(column.ColumnName); 

    //Step 3: Call method we are testing. 
    var updateTable = IceTechUPSClient.Instance.CreateLabels(table); 

    foreach (DataRow row in updateTable.Rows) 
    { 
    var trackingNumber = row["Tracking#"].ToString(); 
    Assert.IsFalse(String.IsNullOrWhiteSpace(trackingNumber), "Expecting tracking number generated for every row!"); 
    Assert.IsTrue(File.Exists(trackingNumber + ".gif")); 
    } 

} 

가 지금은 오류가 점점 오전 : 여기 내 코드는 열 '이름'테이블에 속하지 않습니다. 보시다시피 열 이름 "이름"을 여기에 지정하고 특정 행을 추가했습니다. 그런데 왜이 오류가 발생합니까? 어떤 도움이 필요합니까?

감사합니다!

답변

14

예를 들어 코드를 놓친 경우가 아니면 열을 설정하지 않았습니다. 이 같은 액세스 할 수 있습니다 전에 필요한 이름으로 열을 생성 할 필요가

:

var columnSpec = new DataColumn 
        { 
         DataType = typeof(string), 
         ColumnName = "Name" 
        }; 
this.table.Columns.Add(columnSpec); 

을 데이터를 읽을 때 데이터베이스에서 당신은 진정한 (기본값)로 AutoGenerateColumns를 설정 한 경우 돈 당신이 장면 뒤에서 당신을 위해했던 것처럼 명시 적으로 이것을 할 필요가 없습니다.

+0

uuummm ... 나는 같은 코드를 사용하고 있다고 생각합니다. –

+0

이것이 내가 열을 생성하는 곳입니다 :'DataRow mydatarow; mydatarow = table.NewRow(); // 2 단계 : 실제 데이터와 동일한 행 추가! mydatarow [ "Name"] = "테스트"; mydatarow [ "Address"] = "00000 ST."; mydatarow [ "ZipCode"] = "77665"; mydatarow [ "Tracking #"] = ""; –

+0

여기에서 열 이름은 이름, 주소, 우편 번호 및 추적 번호입니다. –

관련 문제