我有一个方法需要一个 IList<Person>
并返回一个 IEnumberable:
internal static IEnumerable<Dictionary<string, string>> GetPersonsPerSite(IList<Person> Data)
{
//Implementation ...
}
我正在尝试创建 IList<Person>
的模拟对象所以我可以测试这个方法。
我使用 Moq 编写了以下内容:
var mockObjects = new Mock<IList<Person>>();
mockObjects.Setup(x => x[0]).Returns(new Person()
{
SITE_ID = "test",
MPAN = "test",
ADDLINE1 = "test",
ADDLINE2 = "test",
ADDRESS_LINE_1 = "test",
ADDRESS_LINE_2 = "test"
});
然而,当我开始使用该对象时,IEnumerable 返回的是远离抛出异常 Object reference not set to an instance of an object.
我是 Moq 的新手,我很确定我在这里遗漏了一个基本概念,但是我已经成功地能够抛出异常并使用其他模拟对象修改输出。
如果有人能指出正确的方向,我将不胜感激。
最佳答案
不要 mock IList。您不需要这样做,除非您想要检查一些特定的东西。
相反,只需保持测试简单并执行如下操作:
var testData = new List<Person>(){new Person()
{
SITE_ID = "test",
MPAN = "test",
ADDLINE1 = "test",
ADDLINE2 = "test",
ADDRESS_LINE_1 = "test",
ADDRESS_LINE_2 = "test"
}};
var result = GetPersonsePerSite(testData);
关于c# - 尝试创建最小起订量对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9207916/