c# - 尝试创建最小起订量对象

标签 c# unit-testing testing mocking moq

我有一个方法需要一个 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/

相关文章:

C#:将字符串数组传递给 C++ DLL

python - python - 如何使python单元测试在从不同的工作目录运行时始终找到测试数据文件?

ScalaTest:BeforeAndAfter 未运行

Java(客户端)和 C#(服务器)TCP 套接字。和服务器从客户端读取无限的最后数据

c# - GMail API/OAUTH2 - 如何使用已弃用的传统 C# SMTP 方法发送电子邮件?

c# - 如何使用 C# 获取 XML 文档的所有子标记名称?

asp.net-mvc - ASP.Net MVC 中 HttpContext 和可测试 Controller 的最佳实践

reactjs - 如何查找不同元素的 getByRole 可用的属性?

c - 我怎样才能在 C 中获得 80% 的代码覆盖率

testing - Puppet:rake spec 找不到 class::splunk