2017-07-03 64 views
0

我在JavaScript的世界初学者,我的首要任务是覆盖测试现有的项目。我们使用ES6/babel/webpack2,并同意选择Mocha/Chai作为测试框架。JS摩卡测试ES6通天

我做项目的根本是创造.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) 

这颇为期待为仪表板应用只是一个别名,它在两个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为了结合我webpack.config.dev.js(这是适用于测试ENV我相信)?下面并没有为我工作(既不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" 

回答

1

当您从您的package.json运行测试,你不使用的WebPack捆绑你的JavaScript,因此你必须告诉你的测试如何理解导入。 您可以使用mock-require lib添加到您实体模型别名的进口。你会写在女巫会有类似

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

一个test_helper.js文件然后故宫脚本将是这样的:

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

非常感谢,这对我的工作! – Viacheslav