【问题标题】:Jasmine testing dependencies: Cannot use import statement outside of a moduleJasmine 测试依赖项:不能在模块外使用 import 语句
【发布时间】:2020-10-05 21:12:00
【问题描述】:

我知道有很多“不能在模块外使用 import 语句”线程,但我发现没有任何关于 jasmine 的线程。我有一个使用 Preact、Parcel 和 Openlayers 的客户端应用程序。我的大部分代码都位于 Map.js 模块中,我正在尝试设置 Jasmine 对其中的功能进行一些测试。

我已经安装了 jasmine(以及后来的 jasmine-es6)、babel-cli、babel-present-env、babel-preset-es2015,但是每当我运行 jasmin 命令时,导入依赖项的测试都会失败。我的规范文件能够导入我的 Map.js,但无法导入 Map.js 的依赖项,例如 导入 ...node_modules\ol\control\MousePosition。

我的 json.package 有 type:module.

我的 .babelrc 文件:

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

jasmine.json:

  "spec_dir": "/spec",
  "spec_files": [
    "**/*[sS]pec.js"
  ],
  "helpers": [
    "../node_modules/@babel/register/lib/node.js"
  ],
  "stopSpecOnExpectationFailure": false,
  "random": true
}

示例规范:

import MapMod from "../src/Map"

describe('Testing map initialization', () => {
    
    beforeEach(() => {
        // I've tried require() here but get the same error
    });

    it('Should not throw errors', function () {
        expect(MapMod.initMap).not.toThrow();
    });
})

我被难住了。有人可以帮忙吗?

【问题讨论】:

    标签: ecmascript-6 jasmine babeljs es6-modules preact


    【解决方案1】:

    "helpers": [
      "../node_modules/@babel/register/lib/node.js"
    ]
    

    config 似乎不适用于我更高版本的 @babel/register (> 7.12.1)。

    相反,我创建了一个名为 babel.js 的新助手,其中包含以下内容:

    require('@babel/register')
    

    并将其作为../node_modules/@babel/register/lib/node.js 的助手而不是

      "helpers": [
        "spec/helpers/babel.js"
      ]
    

    【讨论】:

    • 这非常有效。谢谢!
    猜你喜欢
    • 2020-11-20
    • 2020-02-09
    • 1970-01-01
    • 2020-01-27
    • 2020-02-11
    • 2020-12-11
    相关资源
    最近更新 更多