2011-08-17 8 views
0

私は数年前から岩の下に住んでいましたが、最終的に単体テストを見ていました。IEnumerableの戻り値型を使用した単体テスト

私はそれが予想されるオブジェクトのためのIEnumerableオフインスタンスを作成することはできません、ユニットテストに

[TestMethod()] 
    public void GetContactsTest() 
    { 
     string sqlStr = Settings1.Default["TestSqlString"].ToString(); 
     ContactRepository target = new ContactRepository(sqlStr); 

     IEnumerable<Contact> expected = new IEnumerable<Contact>(); 
     IEnumerable<Contact> actual; 
     actual = target.GetContacts(); 

     Assert.AreEqual(expected, actual); 

    } 

のIEnumerableを返すリポジトリをしようとしています。しかし。

は、誰もが直接、あなたがそのインターフェイスを実装するクラスを必要とするときは、インターフェイスのインスタンスを作成することはできません。このnoobのは少し:)

答えて

2

をガイドでした。配列はうまくやるだろう、あなたはしかし、あなたはまたAssert.AreEqualはあなたがここでやりたいしないことがわかります

IEnumerable<Contact> expected = new Contact[] {}; 

行うことができます。 2つのオブジェクトが等しいかどうかをテストします。同じシーケンスを生成するかどうかをテストするのと同じではありません。たとえば、Contactの空の配列と空のList <の連絡先>は、オブジェクトと同じではありませんが、同じ(空の)シーケンスを表します。シーケンスが等しいことをテストすることができます

Assert.IsTrue(expected.SequenceEqual(actual)); 
+0

ありがとうございます、私の問題はテストに関係なく、IEnumerableクラスを理解することでした。 – espenk

関連する問題