2010-12-14 19 views
12

में एक नकली DataTable जोड़ा जा रहा है मैं यूनिट परीक्षण कर रहा हूँ मेरी कार्यों में से एक।यूनिट टेस्टिंग

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 ["नाम"] = "टेस्ट"; mydatarow ["पता"] = "00000 एसटी।"; mydatarow ["ZipCode"] = "77665"; mydatarow ["ट्रैकिंग #"] = ""; ' –

+0

यहां कॉलम नाम हैं: नाम, पता, ज़िपकोड और ट्रैकिंग #। –

संबंधित मुद्दे