JS Mocha测试ES6 Babel

时间:2017-07-03 12:50:32

标签: testing ecmascript-6 mocha babeljs

我是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 run test)我收到以下错误:

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.js webpack.config中设置。 prod.js

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

所以,基本上我的问题是如何修改package.json中的test-script以绑定我的webpack.config.dev.js(它适合我认为的测试环境)?以下对我没有用(两种变体都没有):

"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"

1 个答案:

答案 0 :(得分:1)

当你从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"