JS 摩卡测试 ES6 通天塔



我是JavaScript世界的初学者,我的第一个任务是用测试覆盖现有的项目。我们正在使用 ES6/babel/webpack2,并且同意选择 Mocha/Chai 作为测试框架。

我做的第一件事是在项目的根目录中创建 .babelrc 文件:

{
"presets": ["es2015", "react", "stage-0"]
}

之后,我将以下脚本添加到package.json中:

"test": "mocha --compilers js:babel-core/register ./src/test/*.js"

我的简单测试文件如下所示:

import {arraysAreEquals} from 'dashboard-app/utils/common-utils'
import {assert} from 'chai'
describe("common-utils", function () {
it ("arraysAreEquals", function () {
var array1 = [1, 2, 3];
var array2 = [1, 2, 3];
assert.equal(arraysAreEquals(array1, array2), true);
});
});

运行我的测试(npm 运行测试(我收到以下错误:

Error: Cannot find module 'dashboard-app/utils/common-utils'
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)

这是意料之中的,因为dashboard-app只是一个别名,在webpack.config.dev.jswebpack.config.prod.js中都设置了:

resolve: {
modules: [
path.resolve(__dirname),
"node_modules"
],
alias: {
'dashboard-app/config': 'src/config',
'dashboard-app/utils': 'src/utils',
.......

所以,基本上我的问题是我应该如何修改package.json中的测试脚本以绑定我的webpack.config.dev.js(我相信它适用于测试环境(?以下内容对我不起作用(2 种变体都不是(:

"test": "NODE_ENV=dev mocha --compilers js:babel-core/register ./src/test/*.js"
"test": "NODE_ENV=dev --env=dev mocha --compilers js:babel-core/register ./src/test/*.js"

当你从package.json运行测试时,你不会使用webpack来捆绑你的javascript,所以你必须告诉你的测试如何理解这种导入。 您可以使用 mock-require lib 来模拟别名的导入。你会在女巫中写一个test_helper.js文件,会有类似的东西

mock('dashboard-app/utils/common-utils', 'src/utils/common-utils');

那么 npm 脚本将是这样的:

"test": "mocha --compilers js:babel-core/register test_helper.js ./src/test/*.js"

最新更新