gpt4 book ai didi

javascript - 如何在子测试中访问 Jest 测试环境的类属性?

转载 作者:行者123 更新时间:2023-11-30 14:10:29 25 4
gpt4 key购买 nike

我已经为 jest 创建了一个测试环境。它非常接近 their official docs .

我在构造函数中设置了一些值,我希望这些值可用于环境中使用的测试。 (参见 this.foo = bar)。

测试环境:

// my-custom-environment
const NodeEnvironment = require('jest-environment-node');

class CustomEnvironment extends NodeEnvironment {
constructor(config, context) {
super(config, context);
this.testPath = context.testPath;
this.foo = 'bar'; // Trying to access
}

async setup() {
await super.setup();
await someSetupTasks(this.testPath);
this.global.someGlobalObject = createGlobalObject();
}

async teardown() {
this.global.someGlobalObject = destroyGlobalObject();
await someTeardownTasks();
await super.teardown();
}

runScript(script) {
return super.runScript(script);
}
}

module.exports = CustomEnvironment;

我使用以下等价物运行我的测试:

jest --env ./tests/<testing-env>.js

在此测试环境中测试的测试中,我在哪里访问 this.foo

describe('Sample Test', () => {
it('this.foo = bar', () => {
expect(this.foo).toBe('bar');
});
});

我尝试用 es5 函数格式替换两个箭头函数(希望 this 会在范围内)但没有任何运气。

如何从测试环境中的测试中获取类属性?

最佳答案

不幸的是,你不能。我建议以与 this.global.someGlobalObject = createGlobalObject(); 类似的方式公开 foo 并添加 this.global.foo = 'bar'setup 函数中。然后,您可以通过调用 foo 在测试套件中访问此变量。

// my-custom-environment
const NodeEnvironment = require('jest-environment-node');

class CustomEnvironment extends NodeEnvironment {
constructor(config, context) {
super(config, context);
this.testPath = context.testPath;
}

async setup() {
await super.setup();
await someSetupTasks(this.testPath);
this.global.someGlobalObject = createGlobalObject();
this.global.foo = 'bar'; // <-- will make foo global in your tests
}

async teardown() {
this.global.someGlobalObject = destroyGlobalObject();
await someTeardownTasks();
await super.teardown();
}

runScript(script) {
return super.runScript(script);
}
}

module.exports = CustomEnvironment;

然后在你的测试套件中:

// test suite
describe('Sample Test', () => {
it('foo = bar', () => {
expect(foo).toBe('bar'); // <-- foo since it's globally accessible
});
});

关于javascript - 如何在子测试中访问 Jest 测试环境的类属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54545232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com