Mocha的基本功能是如何在“描述/之前/之前”实现的?
我对JS有点陌生,对Mocha还是很陌生,如果这是一个愚蠢的问题,我深表歉意...
我最近刚开始在新的辅助项目中与Mocha合作。我已经在npm i mocha --save-dev
的本地安装了摩卡咖啡。
我开始考虑是否应该像Mocha那样实现项目的一部分,因为我对上手如此简单感到非常满意。问题是我不知道他们如何进行此设置。我已经查看了GitHub上的一些代码,但需要一个高层次的摘要。
这是我的test.js
文件
const app = require('../src/app');
const assert = require('assert');
describe('my app', function(){
it('does something cool', function(){
assert.strictEqual(app.foo(), true);
})
});
我很困惑,因为我没有const mocha = require('mocha');
,但是VS Code仍然可以识别describe
before
和it
之类的标识符。 VS Code甚至告诉我,当我将鼠标悬停在describe
上时,它是[[var describe:Mocha.SuiteFunction。
mocha.describe()
的事情。
回答如下:当mocha加载测试文件时,它将其添加到global
上下文中。- 在此看到:
- 在这里处理:
global
(请注意,suite.on(EVENT_FILE_PRE_REQUIRE, function(context, file, mocha) {})
是suite.on(EVENT_FILE_PRE_REQUIRE, function(context, file, mocha) {})
的context
)]
suite.emit(EVENT_FILE_PRE_REQUIRE, global, file, self)
(请在此处注意suite.emit(EVENT_FILE_PRE_REQUIRE, global, file, self)
自变量),VS代码甚至告诉我,当我将鼠标悬停在您的项目可能已安装global
上时,它是var describe:Mocha.SuiteFunction
suite.emit
软件包。直到我运行describe
时,Intellisense才出现。