在 test.each 中使用变量表达式 Jest

ama*_*mal 4 jestjs

下面是我的代码片段:

describe('Upper Describe,()=>{
  let value;
  beforeEach(()=>{
    value=require('testModule').value;
  });

  it.each([
    `${value}`,
  ])('test something',(value)=>{
    console.log(value);
  });
});
Run Code Online (Sandbox Code Playgroud)

事情就这样value发生了undefined

我的猜测是,这是因为随着描述块在开始时加载it.each, . 任何人都可以帮我解决方法来获取 it.each 数组中的变量值吗?

提前致谢!!

Bri*_*ams 5

不是传递值本身而是it.each传递返回值的函数。

这将延迟对值的评估,因此beforeEach可以修改返回的内容:

describe('Upper Describe', () => {
  let value;
  beforeEach(() => {
    value = require('testModule').value;
  });

  it.each([
    () => `${value}`,  // pass a function that returns the value
  ])('test something', (func) => {
    console.log(func());  // SUCCESS: prints value export from testModule
  });
});
Run Code Online (Sandbox Code Playgroud)

  • 您可以[“通过使用 printf 格式按位置注入参数来生成唯一的测试标题”](https://jestjs.io/docs/en/api#testeachtable-name-fn-timeout),但您无法注入`value` 因为[标题在 `beforeEach` 运行之前被格式化](https://github.com/facebook/jest/blob/728ca114c06daa1c980d2d114142c8d6d3dd0dfb/packages/jest-each/src/bind.js#L57)。看起来你能做的最好的事情就是像“test some %#”这样将数组索引添加到测试标题中。 (2认同)