是否可以在 Jasmine 测试中抑制 console.log?

Ste*_*h M 5 testing jasmine

我正在对记录某些内容的函数运行一些 jasmine 测试。每次运行测试时,我都会在测试输出中看到该日志。我正在测试的函数中有很多日志,但没有看到抑制 jasmine 输出中日志的方法。

我的实际测试正在监视以确保使用正确的字符串调用 console.log。

抑制茉莉花输出中的日志实际上更多是为了测试美学(我只是喜欢看到一个漂亮干净的绿色通过而不是所有的日志)。

Vit*_*osa 5

如果您使用 karma 运行测试,请编辑karma.config.js并添加:

client: {
  captureConsole: false
}
Run Code Online (Sandbox Code Playgroud)

  • 这也抑制了 jasmine 的所有警告/错误,而不仅仅是来自测试代码的警告/错误。是否有一个答案只能抑制被测试代码中的日志,同时保持茉莉花完好无损? (3认同)

小智 5

您可以在控制台方法上放置间谍并期望它被调用,这就是我在 Jasmine 单元测试用例中使用它的方式。希望它有帮助(将“警告”替换为“日志”)

    spyOn(console, 'warn');
    fixture.detectChanges();
    component.doSomething(dummyEventObj);
    fixture.detectChanges();
    expect(console.warn).toHaveBeenCalled();
Run Code Online (Sandbox Code Playgroud)