如何在 cucumber.js 中将内容设置到 Before 中的 World 对象中?

How to set contents into the World object in Before in cucumber.js?

如何在cucumber.js中的场景(例如Before()中)之前将内容放入World对象中?

我想注入一个测试上下文对象,并在场景的第一步之前注入一些初始值。 但在第一步中,this 不是指 World 对象。 如何访问 Before() 中的 World 对象?

const { Given, Before } = require('cucumber');

Before((scenario) => {
  const world = this;
  world.put = 'hello';

  world.myContext = {
    fileName: null,
    fileContent: null,
  };
});

Given( /^step 1$/, { 90000 },
  async function() {
    const world = this;
    console.log('step 1: world: ', world);
    console.log('step 1: world.myContext: ', world.myContext);
});

根据此文档,世界可以通过 'this' 访问,仅在世界和挂钩文件 - https://github.com/cucumber/cucumber-js/blob/master/docs/support_files/world.md 中。此外,'this' 将是一个需要键值的 json 对象。

创建一个名为 world.ts 的单独 class 并添加如下示例代码:

import { setWorldConstructor } from 'cucumber';

const _defaultOptions = {
    env: 'stage',
};
   
function World(input) {
    this.World = input;
    }

    Object.assign(this, _defaultOptions);
}

setWorldConstructor(World);

使用这个,如果我们在 hooks 文件中调用 this.env,你会得到上面映射的值..