express - 在 mocha 中的每个测试文件之前运行一组操作

标签 express mocha.js

我最近开始使用 mocha 来测试我的 expressjs 服务器。
我的测试被分成多个文件,其中大多数包含一些重复的段(主要是在将所有固定装置加载到数据库的语句之前等),这真的很烦人。
我想我可以将它们全部导出到一个文件并在每个测试中导入它们,但我想知道是否有一些更优雅的解决方案 - 例如运行具有所有设置命令的某个文件,以及另一个包含所有设置命令的文件拆卸命令。

如果有人知道答案会很棒:)

最佳答案

mocha 测试的常用功能分为三个基本级别。如果您想为一组测试加载一次固定装置(并且您已将每个测试编写为独立的),请使用 before函数加载文件顶部的装置。您也可以使用beforeEach如果您每次都需要重新初始化灯具,则可以使用该功能。

第二个选项(相关)是将通用功能提取到单独的文件或文件集并需要该文件。

最后,请注意 mocha 有一个 root level hook :

You may also pick any file and add "root"-level hooks. For example, add beforeEach() outside of all describe() blocks. This will cause the callback to beforeEach() to run before any test case, regardless of the file it lives in (this is because Mocha has an implied describe() block, called the "root suite").



我们使用它来启动一个 Express 服务器(并且我们使用一个环境变量,以便它在与我们的开发服务器不同的端口上运行):
before(function () {
  process.env.NODE_ENV = 'test';
  require('../../app.js');
});

(这里我们不需要 done() 因为 require 是同步的。)也就是说,服务器只启动一次,无论有多少不同的测试文件包含这个根级 before功能。

以这种方式拆分的好处是我们可以运行 npm test它运行所有测试,或在任何特定文件或任何特定文件夹,或任何特定测试或一组测试(使用 it.only 和 describe.only)上运行 mocha,并且所选测试的所有先决条件都将运行。

关于express - 在 mocha 中的每个测试文件之前运行一组操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18654563/

相关文章:

javascript - Node JS App 更好的设计和分离

node.js - Nodejs 发送 graphql 上传文件到服务时出现问题

node.js - 为什么我的 jwt token 在背面而不是正面返回 null

node.js - 应用程序未连接到 Mongoose 数据库

javascript - ExpressJS 设置/获取/使用 cookie

javascript - Sinon Spies——测试递归(可能还有 const)函数表达式

angularjs - AngularJS和ExpressJS HTTP错误处理

javascript - 如何模拟回调函数以测试其位于另一个函数的参数内

javascript - Mocha 的 beforeEach() 和 did() 函数不起作用

mocha.js - mocha : Timeout of 20000ms exceeded 单元测试错误