我是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"
答案 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"