如何在我的 ESM(ECMA 模块加载器)项目中使用 Cucumber?

Jac*_*kie 8 javascript cucumber cucumberjs es6-modules

我有一个简单的项目,基本上......

export class Application{
  constructor(...){
    ...
  }
  async run(){
    console.log("I Ran!");
  }
}
Run Code Online (Sandbox Code Playgroud)

我想使用 Cukes 运行它,所以我按照以下步骤操作并使其正常工作(注意 .cjs 扩展名以表明它是一个 cjs 文件)

// features/basic.feature

Feature: Hello World
  Scenario: Hello World
    Given I start the app
    When it is running
    Then I see the console

// features/support/steps.cjs
const { Given, When, Then } = require("@cucumber/cucumber");

Given("I start the app", function () {
  // TODO: Setup child process
  return
});

When("it is running", function () {
  // TODO: Execute using Worker
  return
});

Then("I see the console", function () {
  // assert.equal(this.variable, number);
  return
});
Run Code Online (Sandbox Code Playgroud)

我会使用执行这个cucumber-js --require features/support/steps.cjs

但现在我想导入应用程序并一步运行该应用程序。由于我无法使用 .cjs 导入 ESM (.mjs) 文件,因此我不知道如何执行此操作。我尝试创建步骤文件的 .mjs 版本,但也无法正常工作。我也尝试过cucumber-js --require-module features/support/steps.mjs,但仍然没有成功。

如何在 ESM 风格的项目中使用 Cukes?

djm*_*nki 1

据我所知,这仍然是一个问题。有一个 cukes 实验版本可供使用,它开始解决这些问题(cukes 版本 7.2.0),您可以开始使用它来看看是否可以解决您想要实施的更改。

然而,8.0.0 版本即将推出,其中特别解决了许多此类问题。新版本将在未来几天内发布(祈祷)。

以下是他们迄今为止为解决您遇到的问题所做的所有工作的链接:cucumber-js 添加 ESM 支持(采取 2)