我已经在岩石下生活了好几年,但最后我不得不看一下单元测试。
我正在尝试对返回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创建一个预期对象的实例。
任何人都可以指导一下这个菜鸟:)
答案 0 :(得分:2)
您无法直接创建接口实例,您需要一个实现该接口的类。数组可以很好地完成,所以你可以做到
IEnumerable<Contact> expected = new Contact[] {};
但是,你也会发现Assert.AreEqual
在这里没有做你想做的事。它将测试两个对象是否相等,这与测试它们是否产生相同的序列是不同的。例如,一个空的联系数组和一个空列表&lt; Contact&gt;不等于对象,但它们代表相同(空)的序列。您可以使用
Assert.IsTrue(expected.SequenceEqual(actual));