通过根据需要旋转数据库或模拟来进行测试?

Testing by spinning up db's as needed or mocking?

我正在开始一个新的节点项目,我希望获得最大的测试覆盖率。我正在尝试找出最好的方法来测试访问数据库或调用其他 REST 服务的内容。

我已经为 mock/spys/stubs 涉足了 sinon.js,但这些东西似乎很快就让我感到困惑。

我正在考虑使用一些内存节点数据存储来设置和填充数据,运行 我的测试,然后拆除内存数据存储。基本上类似于 travis-ci 的工作方式。

至于访问 Web 服务,我认为我仍然需要 mock/spy/stub 那些。

其他人如何处理这样的事情?

对于 BDD,测试规范应该很快。如果测试很快,它会让你快速发展。

您不会测试其他 REST 服务,您将测试您的代码在使用这些 REST 服务时的行为方式。

模拟 REST 服务始终是一个好主意,因为它可以加快规范的执行速度。

对于与数据库读写相关的规范,在本地运行一个数据库总是好的,你可以使用beforeEachafterEach从数据库中插入和删除数据。

为了自动启动和停止db,在package.json

中的scripts下添加pretestposttest命令

结论: 我会模拟 REST 服务和 运行 一个仅用于测试的本地数据库。这将使我能够快速 运行 规格。

使用 grunt watch 并点击保存,BAM!!!,你知道你的规格是否通过。