我最近开始使用 mocha 来测试我的expressjs 服务器。
我的测试分为多个文件,其中大多数包含一些重复的段(主要是在将所有装置加载到数据库的语句之前等),这真的很烦人。
我想我可以将它们全部导出到一个文件中,并在每个测试中导入它们,但我想知道是否有一些更优雅的解决方案 - 例如运行包含所有设置命令的某个文件,以及包含所有设置命令的另一个文件拆卸命令。
如果有人知道答案那就太棒了:)
摩卡测试的常见功能分解分为三个基本级别。如果您想为一堆测试加载一次某些装置(并且您已将每个测试编写为独立的),请使用before
函数加载文件顶部的装置。您还可以使用beforeEach
如果您需要每次重新初始化灯具,请使用此函数。
第二个选项(相关)是将通用功能提取到一个单独的文件或一组文件中,并需要该文件。
最后,请注意摩卡有一个根级钩子 https://mochajs.org/#root-level-hooks:
您还可以选择任何文件并添加“根”级挂钩。例如,在所有describe() 块之外添加beforeEach()。这将导致对 beforeEach() 的回调在任何测试用例之前运行,无论它位于哪个文件中(这是因为 Mocha 有一个隐含的 describe() 块,称为“根套件”)。
我们用它来启动一个 Express 服务器一次(并且我们使用一个环境变量,以便它在与我们的开发服务器不同的端口上运行):
before(function () {
process.env.NODE_ENV = 'test';
require('../../app.js');
});
(我们不需要done()
这里因为 require 是同步的。)这是,无论有多少不同的测试文件包含此根级别,服务器都会启动一次before
功能。
以这种方式拆分的好处是我们可以运行npm test
它运行所有测试,或在任何特定文件或任何特定文件夹上运行 mocha,或任何特定测试或一组测试(使用 it.only 和 describe.only),并且将运行所选测试的所有先决条件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)