javascript - 使用 Jasmine 或任何其他替代方案在 Node 上运行测试 .mjs/ESM

标签 javascript node.js testing jasmine es6-modules

由于 --experimental-modules CLI 开关(即 node --experimental-modules),我的基于 Node 的项目是在 Node 上使用原生 ES 模块支持实现的.

显然,当我使用 Jasmine node --experimental-modules ./node_modules/jasmine/bin/jasmine 运行规范时,出现以下错误:

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module

是否可以在 Node 中通过 ES 模块使用 Jasmine?

如果不是,是否有任何替代方法不使用框架(例如,使用 npm 脚本运行测试)?

最佳答案

这比我想象的要容易。

它只是关于调用一个文件,您可以调用 run.mjs,如下所示:

node --experimental-modules ./run.mjs

整个文件看起来像这样:

Jasmine .mjs:

import Jasmine from "jasmine"
import JasmineConsoleReporter from "jasmine-console-reporter"

const jasmine = new Jasmine()
jasmine.loadConfigFile( "./support/jasmine.json" )

jasmine.env.clearReporters()
jasmine.addReporter( new JasmineConsoleReporter( {
    colors: true,
    cleanStack: true,
    verbosity: 4,
    listStyle: 'indent',
    activity: false
} ) )

export default jasmine

您可以在单独的文件中添加如下规范:

import jasmine from './my-project/spec/jasmine.mjs'

jasmine.env.describe('Foo', () => {
    jasmine.env.it('Bar', () => {
        // Expects, assertions...
    })
})

最后,您将运行 jasmine 导入配置的 jasmine 实例和规范:

import jasmine from './my-project/spec/jasmine.mjs'
import someSpec1 from './my-project/spec/someSpec1.mjs'
import someSpecN from './my-project/spec/someSpecN.mjs'

someSpec1()
someSpecN()

jasmine.execute()

关于javascript - 使用 Jasmine 或任何其他替代方案在 Node 上运行测试 .mjs/ESM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47832603/

相关文章:

node.js - 如何使用node.js发布页面

python - 环境变量的 SECRET_KEY 错误

testing - 如何减慢 TestCafe 中的测试执行速度?

javascript - 使用 json 数据填充 Materialise 自动完成功能

javascript - 当绝对定位元素覆盖时忽略 mouseleave 事件

javascript - 一次又一次调用异步函数,直到在 Node JS 中得到预期的结果

mysql - Angular 7可以使用 Node js 'mysql'模块连接到mysql吗

testing - 通过单击插入时间文本检查点时(比如 12 :50 pm) and running it,,它给出的结果是失败的?

javascript - 在引号之间匹配 HTML 打开标签

javascript - 根据数组中的值检查用户输入值