m.e*_*son 0 c# testing unit-testing moq mocking
我有一个方法,它接受一个IList<Person>并返回一个IEnumberable如下:
internal static IEnumerable<Dictionary<string, string>> GetPersonsPerSite(IList<Person> Data)
{
//Implementation ...
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个模拟对象,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"
});
Run Code Online (Sandbox Code Playgroud)
但是,当我来使用IEnumerable返回的对象时,抛出异常 Object reference not set to an instance of an object.
我是Moq的新手,我很确定我在这里缺少一个基本概念,但是我已经成功地能够使用其他模拟对象抛出异常和修改输出.
如果有人能指出我正确的方向,我会很感激.
不要嘲笑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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1834 次 |
| 最近记录: |