ReferenceError:运行玩笑测试时未定义 ReadableStream

Noa*_*ver 8 testing jsdom jestjs redux redux-saga

我的网络应用程序使用自定义 ReadableStream 读取本地文件(这样我就不需要平台支持的最大文件大小),并且它对于格式正确的文件和错误文件都非常有效。我的应用程序是使用 React-Redux-Saga 构建的。

我现在尝试e2e向我的代码添加有限的测试来测试状态管理。我正在测试发送redux操作时状态是否正确更新。我正在使用 package 测试传奇redux-saga-tester

在运行使用我构建的 ReadableStream 读取本地文件的 jest 客户端测试时,出现错误ReferenceError: ReadableStream is not defined。我的理解是使用的jsdom环境jest缺少 ReadableStream 实现。然后我添加了web-streams-polyfill包来填充 ReadableStream 类。

现在验证文件测试正在通过,就像在浏览器中一样:

test('Select and validate log file', async () => {
  const testFile = testFileBuilder.valid();
  storeTester.dispatch(fileSelected(testFile));
  await storeTester.waitFor(FILE_VALIDATED);
  const state = storeTester.getState().file;
  expect(state.fileValidated).toBeTruthy();
});
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我使用无效文件运行第二次验证测试时,测试通过,但在控制台上打印错误。

考试:

test('Select an invalid file - JSON error', async () => {
    const testFile = testFileBuilder.errorJSON();
    storeTester.dispatch(fileSelected(testFile));
    await storeTester.waitFor(FILE_ERROR);
    const state = storeTester.getState().file;
    expect(state.fileValidated).toBeFalsy();
    expect(state.fileError).toBeTruthy();
  });
Run Code Online (Sandbox Code Playgroud)

测试成功完成后打印的错误:

e.error node_modules/jsdom/lib/jsdom/virtual-console.js:29
    Error: Error: connect ECONNREFUSED 127.0.0.1:80
        at Object.dispatchError (/home/noams/dev/web/visual-log-viewer/client/node_modules/jsdom/lib/jsdom/living/xhr-utils.js:65:19)
        at Request.client.on.err (/home/noams/dev/web/visual-log-viewer/client/node_modules/jsdom/lib/jsdom/living/xmlhttprequest.js:676:20)
        at Request.emit (events.js:194:15)
        at Request.onRequestError (/home/noams/dev/web/visual-log-viewer/client/node_modules/request/request.js:881:8)
        at ClientRequest.emit (events.js:189:13)
        at Socket.socketErrorListener (_http_client.js:392:9)
        at Socket.emit (events.js:189:13)
        at emitErrorNT (internal/streams/destroy.js:82:8)
        at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
        at process._tickCallback (internal/process/next_tick.js:63:19) undefined
Run Code Online (Sandbox Code Playgroud)

任何后续文件验证测试都会失败。

对于如何解决这个问题的任何建议,我将不胜感激。