“export default ”在node进行单元测试时遇到麻烦
1 2 3 | export default class EnWordStudy{ //... } |
程序是electron-vue,所以大量存在export default的语法,于是我的后台的类也使用类似语法。
以下是单元测试的代码treetest.js
1 2 3 4 5 6 7 8 9 | 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.安装依赖
1 | npm install babel-register babel-preset-env -D |
2.增加start.js
1 2 3 4 | require( 'babel-register' ) ({ presets: [ 'env' ] }) module.exports = require( './treetest.js' ) |
3.原测试代码node treetest.js,改为运行node start.js
完美兼容!当然每次都这么加一个文件也不是一个好办法,有前面的基础,其实可以更简便。以下以mocha的测试例子说明一下。其实就是改用require,注意后面有个".default",并在文件头增加presets
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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" ); }); }); }); }); |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步