【发布时间】:2010-12-14 12:59:39
【问题描述】:
首先,我最好问问我是否应该模拟字典?如果我应该如何实现?
我正在使用 Rhino Mocks。我查看了它的文档,发现它可以模拟 ArrayList。所以我在字典上试了一下,但没有运气。我得到了我没有调用虚方法bla bla的错误......如果我不模拟它会不会有问题?
【问题讨论】:
标签: c# unit-testing dictionary rhino-mocks
首先,我最好问问我是否应该模拟字典?如果我应该如何实现?
我正在使用 Rhino Mocks。我查看了它的文档,发现它可以模拟 ArrayList。所以我在字典上试了一下,但没有运气。我得到了我没有调用虚方法bla bla的错误......如果我不模拟它会不会有问题?
【问题讨论】:
标签: c# unit-testing dictionary rhino-mocks
您只能模拟接口或具有虚拟方法的类:不能模拟Dictionary<K,V>,但可以模拟IDictionary<K,V>。
这取决于您的情况,但构建一个真正的字典并用模拟对象填充它可能就足够了。
【讨论】:
在不知道您的特定测试场景的情况下,我不会模拟 .NET 框架类,因为您可以认为它们可以正常工作。
此规则的例外情况可能适用于允许访问外部资源(如文件或 SQLConnection)的类,但这是因为您不想在单元测试中设置这些资源,而不是因为您不想测试类本身。
【讨论】:
我可以向您保证,字典在 .Net 中运行良好 :)
我认为您在编写测试时需要务实,而不是试图模拟一切。因为你能走多远?你会如何模拟一个int?显然边界线在哪里是可以讨论的,但我通常不嘲笑:
【讨论】: