javascript - 如何将 ES6 类模块导入 Jasmine 进行测试?

标签 javascript unit-testing ecmascript-6 jasmine es6-class

我想对一些存储为模块的 ES6 类进行单元测试。但是,当我尝试运行测试时,import触发错误消息:Cannot use import statement outside a module这意味着我无法测试我的模块。

所有 Jasmine 示例都使用旧的 ES5 语法,其类定义为 function s 使用 modules.export然后使用 require 导入功能。我找到了诸如 this 之类的网站。他们似乎在哪里使用 ES6 和 import { module } from 'path'语法,但我不知道为什么这行得通,为什么我的不行?是因为我没有使用 headless 浏览器进行测试吗?这是因为 Jasmine 本身不支持这个功能,我需要一些其他的包吗?是不是因为我需要使用jasmine-node以某种特定的方式让它工作?我应该根本不使用 ES6 类吗?

很明显,我是 node 和 javascript 的初学者,但我没想到仅仅测试一个类的功能会如此困难,所以如果有人能给我一些关于 的指导的话如何在 Jasmine 中完成对类模块的测试我将不胜感激 .

例如我有一个模块。

// src/myClass.mjs
export class MyClass {
  constructor() { }
}

我有一个简单的 Jasmine 单元测试。
// spec/myClassSpec.js
import { MyClass } from '../src/myClass.mjs'
describe('my class', function() {
  var myClassInstance
  beforeEach(function() {
    myClassInstance = new MyClass()
  })

  it('is an instance of MyClass', function() {
    expect(myClassInstance).toBeInstanceOf(MyClass)
  })
})

最佳答案

我可能迟到了,但是在 Nodejs 中使用“import”语句并不像看起来那么简单。
require 和 import 之间几乎没有主要区别(例如异步),因此不能简单地将其转换为另一种。
**

  • 一个简单的解决方案是使用汇总

  • **。
    完成模块后,您可以使用汇总将此模块捆绑为 commonjs 文件。然后可以使用该文件进行测试。
    安装汇总
    npm install rollup --save-dev
    安装汇总后,您需要将以下命令添加到“package.json”文件的脚本中
    “dist”:“汇总 -c”
    您需要在应用程序的根文件夹中有一个 rollup.config.js 文件。
    rollup.config.js 的内容是:
    import { rollup } from "rollup";
    
    export default {
    input: './index.js',
    output: {
      file: 'dist/index.js',
      format: 'cjs' //cjs stands for common js file
    }
    
    };

    关于javascript - 如何将 ES6 类模块导入 Jasmine 进行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61985831/

    相关文章:

    javascript - 选择div中不包含的类

    javascript - 单元测试 AngularJS 指令包装 Snap.svg

    javascript - 如何让浏览器在单击按钮时导航到指定选项卡?

    javascript - JSFiddle 示例在网络上工作但在我的电脑上不工作

    javascript - 正则表达式元音到 1337 个数字

    reactjs - 如何使用 Jest 和 Enzyme 对包含 History.push 的 React 事件处理程序进行单元测试?

    java - 仅注入(inject)一些属性, mock 其他属性

    javascript - 在附加到对象属性的 javascript 函数中使用 'this'

    javascript - 显示基于三元运算符的元素

    javascript - 删除有条件的重复元素