【问题标题】:How to mock a dictionary?如何模拟字典?
【发布时间】:2010-12-14 12:59:39
【问题描述】:

首先,我最好问问我是否应该模拟字典?如果我应该如何实现?

我正在使用 Rhino Mocks。我查看了它的文档,发现它可以模拟 ArrayList。所以我在字典上试了一下,但没有运气。我得到了我没有调用虚方法bla bla的错误......如果我不模拟它会不会有问题?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2016-11-12
          • 1970-01-01
          • 2017-12-04
          • 2018-08-20
          • 1970-01-01
          • 2019-11-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多