gpt4 book ai didi

javascript - 如何使用 mocha 测试 ES6 模块(这些模块带有导入)?

转载 作者:行者123 更新时间:2023-12-01 21:47:21 25 4
gpt4 key购买 nike

这是我第一次测试 JS 前端,为此我选择了 mocha。
我有一个类,让我们说 Market,它使用了我制作的其他类。
我在最后使用 import ... from ... 子句和 export default Market

所以 Market 类看起来像这样:

import { math, AnotherClass, MyOtherClass } from '../index.js'
class Market {
constructor () {
// code here
}
methodToTest(input) {
// some code here ...
return output
}
}
export default Market

然后是我的 test.js

var assert = require('assert')
// import { Market } from '../public/mm/ai/Market.js'
var Market = require('../public/mm/ai/Market')

describe('Market', function() {
describe('#methodToTest()', function() {
it('should return 0 input is greater than mean + 4 * sigma', function() {
var market = new Market()
assert.equal(market.methodToTest(45), 0)
})
})
})

运行测试后出现错误:

import { math, AnotherClass, MyOtherClass } from '../index.js'
^^^^^^

SyntaxError: Cannot use import statement outside a module

和一个错误堆栈。

问题是:如何让 mocha 使用这些导入测试我的模块?
如您所见,我也尝试在 test.js 中直接使用导入,但也失败了。但我不想重写我的整个项目以使用 require,因为它在浏览器中工作得很好,就像现在一样。

最佳答案

For anyone who suffer from configuration

1。安装

需要安装mocha和@babel/XXX插件

npm install mocha --save-dev
npm install @babel/cli @babel/core @babel/preset-env @babel/register --save-dev

检查 package.json。可能是这样的

{
"scripts": { ... }
"devDependencies": {
"@babel/cli": "^7.15.7",
"@babel/core": "^7.15.5",
"@babel/preset-env": "^7.15.6",
"@babel/register": "^7.15.3",
...
"mocha": "^9.1.2",
...
},
...
}
  • 版本可以不同

2。巴别塔配置

[PROJECT-ROOT]下创建babel配置文件.babelrc

[PROJECT-ROOT]
+- src
+- test
+- package.json
+- .babelrc (+)

然后像这样填写内容

{
"presets": ["@babel/preset-env"]
}

3。测试脚本运行器

打开 package.json 并找到“scripts” block

{
"name": "...",
...
"scripts": {
"build": ...,
"start": ...,
},
}

创建值为 mocha --require @babel/register 的“test”属性

{
"name": "...",
...
"scripts": {
"build": ...,
"start": ...,
"test": "mocha --require @babel/register"
},
}

4。样本

创建要测试的文件(calc.js),并测试文件(calc.spec.js)

[PROJECT-ROOT]
+- src
+- calc.js (+)
+- test
+- calc.spec.js (+)
+- package.json
+- .babelrc
// calc.js
const add = (a, b) => a + b
const mul = (a, b) => a * b

export default {
add,
mul
}

和测试文件calc.spec.js

// calc.spec.js
const assert = require('assert')
import calc from '../src/calc'

describe('testing calc.add, cal.mul', () => {
it('should be seven', () => {
const seven = calc.add(3, 4)
assert.equal(7, seven)
})
})

5。运行测试

在控制台输入npm run test

$ npm run test

testing calc.add, cal.mul
✔ should be seven


1 passing (7ms)

6。引用

关于javascript - 如何使用 mocha 测试 ES6 模块(这些模块带有导入)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60227314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com