Unit testing 如何编写涉及数据库的单元测试?

Unit testing 如何编写涉及数据库的单元测试?,unit-testing,node.js,Unit Testing,Node.js,在Node.js中,我编写了一个twitter客户端。我如何编写涉及发布线程和内容的单元测试 总之,存根。在进行单元测试时,为twitterapi调用编写存根函数,每次只返回相同的数据和响应。毕竟,您并不是在测试Twitter的API。当您首先编写测试(TDD)时,执行一些称为。Bob叔叔在做TDD时练习: 这些年来,我一直在描述 测试驱动开发 三条简单的规则。他们是:你是 不允许写任何作品 代码,除非它是为了制造一个失败 单元测试通过。不允许你这样做 编写比当前更多的单元测试 足以失败;编撰

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

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

当您首先编写测试(TDD)时,执行一些称为。Bob叔叔在做TDD时练习:

这些年来,我一直在描述 测试驱动开发 三条简单的规则。他们是:你是 不允许写任何作品 代码,除非它是为了制造一个失败 单元测试通过。不允许你这样做 编写比当前更多的单元测试 足以失败;编撰 失败就是失败。你不是 允许写更多的作品 代码大于足以通过 一个失败的单元测试

您必须从编写单元测试开始 对于您想要的功能 写作。但根据规则2,你不能 写很多单元测试。作为 一旦单元测试代码失败 编译,或使断言失败,则 必须停止并写入生产代码。 但根据规则3,你只能写 生成测试的生产代码 编译或传递,而不是更多

如果你想一想,你会的 认识到你根本无法写作 非常多的代码都没有 编译和执行某物。 事实上,这才是关键。在里面 我们所做的一切,无论是写作 测试、编写生产代码或 重构后,我们保留了系统 随时执行。时间 运行测试之间的时间间隔在订单上 秒或分钟。甚至10 分钟太长了

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


根据数据库代码的功能,内存中的SQLite数据库对于单元测试也很有用。现在不推荐使用该链接。