Unit Test with Jest gives TypeError: File.test.js: Cannot read property 'toString' of undefined

Unit Test with Jest gives TypeError: File.test.js: Cannot read property 'toString' of undefined

我一直在使用 Expo CLI 在 React Native 中工作,最近我的单元测试开始遇到问题,由于一个常见原因而失败。堆栈跟踪在下面

Cannot read property 'toString' of undefined

      at Converter.toBase64 (node_modules/convert-source-map/index.js:61:46)
      at Converter.toComment (node_modules/convert-source-map/index.js:65:21)
      at generateCode (node_modules/@babel/core/lib/transformation/file/generate.js:78:76)
      at run (node_modules/@babel/core/lib/transformation/index.js:55:33)
          at run.next (<anonymous>)
      at transform (node_modules/@babel/core/lib/transform.js:27:41)
          at transform.next (<anonymous>)
      at evaluateSync (node_modules/gensync/index.js:244:28)
      at sync (node_modules/gensync/index.js:84:14)

我的节点版本是 node:12.18.4.I 想知道是什么导致了这些错误,因为一切都运行良好。在我的本地系统上,它们偶尔工作正常,但 CI 过程往往会随机地使它们失败,这阻碍了整体代码覆盖率数字。

我正在尝试的单元测试运行非常简单,如下所示

it('Renders Strings as expected', () => {
  expect(received).toStrictEqual(expected)
})

致那些仍在四处寻找上述问题答案的人。 问题出在需要处理此异常的库本身 convert-source-map 中。

我分叉了实际的存储库并在第 64 行的 toBase64 方法中处理了该异常。现在这个方法看起来有点像

Converter.prototype.toBase64 = function () {
  var json = this.toJSON();
  return (SafeBuffer.Buffer.from(json, 'utf8') || "").toString('base64');
};

现在一切正常。

原来的方法是这样的

Converter.prototype.toBase64 = function () {
  var json = this.toJSON();
  return SafeBuffer.Buffer.from(json, 'utf8').toString('base64');
};