我有一个名为test/helper.js的文件,用于在我的 node 上运行Mocha测试.jsapply.我的测试 struct 如下所示:

test/
test/helper.js    # global before/after
test/api/sometest.spec.js
test/models/somemodel.spec.js
... more here

必须加载文件helper.js,因为它包含我的测试套件的全局钩子.当我运行Mocha来执行整个测试套件时,如下所示:

mocha --recursive test/

helper.js文件在我的测试和before钩子按预期执行之前加载.

然而,当我只运行一个特定的测试时,在测试之前没有加载helper.js.我就是这样运行的:

mocha test/api/sometest.spec.js

没有全球before强,甚至没有console.log('I WAS HERE');强.

那么我怎样才能让摩卡always加载我的helper.js文件呢?

推荐答案

Mocha对名为helper.js的特殊文件没有任何概念,它会在加载其他文件之前加载.

因为Mocha happens加载文件的顺序,所以当你运行mocha --recursive时,你试图做的事情会起作用.因为helper.js比其他文件高一级,所以它首先被加载.当您为Mocha指定一个单独的文件时,Mocha只加载this file,正如您所发现的,您的helper.js文件根本没有加载.

所以你要做的是加载一个文件,这样它就会设置顶级("全局")钩子(例如beforeafter等).选项:

  1. 你可以使用Mocha programmatically并按你想要的顺序将文件提供给它.

  2. 在列出任何其他文件之前,您可以强制自己始终在命令行first上指定助手文件.(我不会这么做,但这是可能的.)

  3. 另一个 Select 是像我在this answer中详述的那样组织你的套房.基本上,您有一个"顶级"文件,将套件的其余部分加载到其中.使用这种方法,您将失go 在单个文件上运行Mocha的能力,但您可以使用--grep来 Select 正在运行的内容.

你可以使用-r选项.它在运行套件之前加载模块,但不幸的是,加载的模块无法访问Mocha为您的测试提供的任何测试接口,因此无法设置挂钩.

Node.js相关问答推荐

如何修复PayPal Node.js Webhook中Webhook签名验证失败?''

需要关于基于角色授权的设计建议

如何使用jq将依赖项添加到package.json中

自动将Selify打开的Chrome窗口移动到Mac OS中的第三个显示器

Node-Red Tasmota 错误:连接 ECONNREFUSED 192.168.77.21:1883

表达 js 错误处理程序在第一个之后被忽略

在express js模型中将js转换为Typescript 时Typescript 错误

Winston http 日志(log)级别的行为与 info 不同

bash:npm:找不到命令?

Node.js 变量声明和范围

所有的javascript回调都是异步的吗?如果不是,我怎么知道哪些是?

运行摩卡+伊斯坦布尔+通天塔

在 Mongoose 中创建外键关系

在 Jade 包含中使用变量

如何判断MongoDB本机nodejs驱动程序中是否存在集合?

Socket.IO 连接用户数

为什么 Node.js 没有原生 DOM?

Puppeteer 等待所有图像加载然后截图

使用 Node-sass 缩小 CSS

node/nodemon 中是否有对 typescript 的源映射支持?