【问题标题】:How can I catch or suppress a rejected network request from Jest?如何捕获或抑制来自 Jest 的拒绝网络请求?
【发布时间】:2019-07-28 00:01:44
【问题描述】:

我正在开发一个 HTTP 模拟库,并且正在编写一个测试,断言我的库不会拦截对特定 URL 的请求。我正在使用 Jest。

这是测试:

test("it can passthrough individual paths", async () => {
  server.passthrough("/addresses");

  try {
    await fetch("/addresses");
  } catch (e) {
    expect(1).toEqual(1);
  }
});

测试通过了,但这是我的输出:

我相信这是 jsdom 由于未处理的网络请求而写的错误。但就我而言,这是意料之中的。

如何抑制或覆盖此控制台消息?当我在之前的 QUnit 设置中在浏览器中运行这些测试时,一旦我使用 catch 处理错误,屏幕上就没有额外的日志记录。希望这里有类似的东西,而我不必修补 fetchconsole

【问题讨论】:

    标签: jestjs jsdom


    【解决方案1】:

    这似乎是 jsdom 的 virtual console(它将报告所有请求错误,独立于代码流(以及未捕获时的脚本错误)——就像浏览器一样)。您可以相对轻松地抑制输出:

    jest.config.js

    const { VirtualConsole } = require('jsdom');
    const virtualConsole = new VirtualConsole();
    // default virtualConsole has sendTo(console) defined
    
    module.exports = {
      "testEnvironmentOptions": { virtualConsole }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-04-15
      • 2021-04-14
      • 2016-01-27
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多