如何模拟字典?

时间:2010-12-14 12:59:39

标签: c# unit-testing dictionary rhino-mocks

首先,我最好问一下我是否应该嘲笑词典?如果我应该如何实现呢?

我正在使用Rhino Mocks。我浏览了它的文档,看到它可以模拟ArrayList。所以我在字典上尝试过但没有运气。我得到的错误是我没有称之为虚拟方法bla bla ...如果我不嘲笑它会是一个问题吗?

3 个答案:

答案 0 :(得分:3)

您只能使用虚拟方法模拟接口或类:您不能模拟Dictionary<K,V>,但可以模拟IDictionary<K,V>

这取决于你的情况,但它可能足以构建一个真正的字典,并用模拟对象填充它。

答案 1 :(得分:2)

在不知道您的特定测试场景的情况下,我不会模拟.NET框架类,因为您可以认为它们正常工作。

此规则的例外情况可能适用于允许访问外部资源的类(如File或SQLConnection),但这是因为您不希望在单元测试中设置这些资源,而不是因为您不想测试班级本身。

答案 2 :(得分:2)

我可以向你保证,字典在.Net中运行良好:)

我认为在编写测试时你需要务实,而不是试图模仿一切。因为你能走多远?你会如何模拟一个int?显然可以讨论边界线在哪里,但我通常不会嘲笑:

  • .Net框架,只要它不连接到某些外部资源
  • 我自己的琐碎课程(即只存储数据的课程)
  • 静态助手方法(虽然这些方法应该非常简单),包括扩展方法