【问题标题】:How to get Jest to works with v8intrinsic "--allow-natives-syntax"?如何让 Jest 与 v8intrinsic “--allow-natives-syntax”一起使用?
【发布时间】:2021-11-22 18:19:43
【问题描述】:

@babel/core@^7.6.0 之后,支持通过 babel 解析 v8intrinsic,但运行 node 需要一个标志 --allow-natives-syntax。

我们在这里使用 node --allow-natives-syntax node_modules/.bin/jest

在 jest 单元测试中使用它时,jest-runner 无法识别用于调用 v8intrinsic 的 %。

如下:

describe('foo', () => {
  beforeEach(async () => {
    await page.goto(PATH, { waitUntil: 'load' })
  })
  test('should return bar', async () => {
    const foo = await page.evaluate(() => {
      console.log('foo');

      var args = 'testing';
      %GetOptimizationStatus(args);
      
      return foo(args);
    })
    expect(foo).toBe('bar')
  })
})

【问题讨论】:

  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: node.js webpack jestjs v8 babel-jest


【解决方案1】:

您是否启用了"v8intrinsic" Babel 插件?

详情请看这里:https://babeljs.io/blog/2019/09/05/7.6.0#v8-intrinsic-runtime-functions-parsing-10148httpsgithubcombabelbabelpull10148

(请注意,我不建议在任何事情上依赖 V8 内在函数,甚至不包括测试。尤其是像 %GetOptimizationStatus 这样的内部细节会随着时间的推移而改变。如果我在你(或你的团队) ) 的地方,我不希望仅仅因为新的 V8 版本在内部做一些与以前略有不同的事情就必须调试失败的测试。但这当然取决于你......)

【讨论】:

  • 感谢您的链接。我确实启用了 babel 插件。不知何故,它不起作用。 Jest 似乎没有调用 babel 的解析器。我还在弄清楚我做错了什么。
猜你喜欢
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-17
  • 2018-06-14
  • 2021-06-18
  • 2019-06-08
  • 2021-10-27
相关资源
最近更新 更多