【问题标题】:How do you write unit tests that involve databases?你如何编写涉及数据库的单元测试?
【发布时间】:2011-09-30 21:06:34
【问题描述】:

在 Node.js 中,我编写了一个 twitter 客户端。我如何编写涉及人们发布线程和内容的单元测试?

【问题讨论】:

    标签: unit-testing node.js


    【解决方案1】:

    总之,存根。进行单元测试时,为您的 Twitter API 调用编写存根函数,每次只返回相同的数据和响应。毕竟,您不是在测试 Twitter 的 API。

    【讨论】:

    • 根据数据库代码的作用,内存中的 SQLite 数据库也非常适合单元测试。
    【解决方案2】:

    当您首先编写测试 (TDD) 时,会更自然地执行称为 dependency injection 的操作。 Bob大叔在做TDD时练习three rules

    多年来我来描述 测试驱动开发 三个简单的规则。他们是:你是 不允许写任何作品 代码,除非它是为了失败 单元测试通过。你不被允许 写比现在更多的单元测试 足以失败;和编译 失败就是失败。你不是 允许写更多的作品 代码足以通过 一个失败的单元测试。

    您必须从编写单元测试开始 对于您想要的功能 来写。但是根据规则 2,你不能 写了很多那个单元测试。作为 一旦单元测试代码失败 编译,或者断言失败,你 必须停止并编写生产代码。 但是根据规则 3,你只能写 进行测试的生产代码 编译或通过,仅此而已。

    如果你考虑到这一点,你会 意识到你根本不会写 非常多的代码根本没有 编译和执行某些东西。 确实,这才是重点。在 我们所做的一切,无论是写作 测试,编写生产代码,或 重构,我们保留系统 随时执行。时间 在运行测试之间是有序的 秒或分钟。甚至 10 分钟太长了。

    您还可以使用我认为一些流行的存根框架进行存根:

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 该链接现已弃用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 2010-11-16
      • 2021-03-02
      相关资源
      最近更新 更多