“export default ”在node进行单元测试时遇到麻烦

export default class EnWordStudy{ 
//...
}

  程序是electron-vue,所以大量存在export default的语法,于是我的后台的类也使用类似语法。

以下是单元测试的代码treetest.js

import EnWordsDb from "../src/renderer/enwords";
import EnWordStudy from "../src/renderer/enwordstudy";
import assert  from "assert";

let db = new EnWordsDb();
let dbStu = new EnWordStudy(db);
dbStu.init((data)=>{
    assert.ok( data,"has return");
});   

  但在进行单元测试时会有麻烦,会提示“SyntaxError: Unexpected identifier”

 查网友说明,webpack 2中不允许混用import和module.export

https://www.cnblogs.com/joyco773/p/8688410.html

所以也不打算动原有的代码,还好找到以下内容

https://blog.csdn.net/zwkkkk1/article/details/81564971

参考上面的内容,我做了以下几步

1.安装依赖

npm install babel-register babel-preset-env -D

  

2.增加start.js

require('babel-register') ({
    presets: [ 'env' ]
})
module.exports = require('./treetest.js')

  

3.原测试代码node treetest.js,改为运行node start.js

完美兼容!当然每次都这么加一个文件也不是一个好办法,有前面的基础,其实可以更简便。以下以mocha的测试例子说明一下。其实就是改用require,注意后面有个".default",并在文件头增加presets

require('babel-register')({
    presets: ['env']
})

const EnWordsDb = require("../src/renderer/enwords.js").default;
const EnWordStudy = require("../src/renderer/enwordstudy.js").default;
const assert  = require("assert");

describe("EnWordsDb",()=>{
    describe("init(cb)",()=>{
        it("it should be good",()=>{
            let db = new EnWordsDb();
            let dbStu = new EnWordStudy(db);
            dbStu.init((data)=>{
                assert.ok( data,"has return");
            }); 
        });
    });
});

  

原文地址:https://www.cnblogs.com/kevin-Y/p/12229717.html