如何可视化非常大的字符串或对象的 karma/jasmine 测试失败?

问题描述 投票:0回答:0

我正在开发一个可以将某些文件转换为其他格式的 Angular 项目。最后我只是生成很长的字符串,或者非常大的对象并将它们转换成字符串,然后将它们写入文件。

在我的 Jasmine 测试中,我遇到了很多麻烦,因为当字符串或对象如此之大时,很难看出测试失败的原因。它只是说:

预期'[非常大的字符串]'等于'[其他大字符串]'

当然,那些非常大的字符串会超出页面范围,有时甚至会在错误消息中被截断。即使它们不是,也很难发现细微的差异,有时甚至是看不见的差异,如

\n
\r
.

是否有某种 Jasmine 插件可以在期望和实际结果之间显示一些视觉效果,例如差异,从而使此类测试更容易?


这是我正在处理的截图示例。我发现调试它的唯一方法是

console.log
出每个字符串并将它们粘贴到差异查看器中。


现在我正试图排除空白字符是这个辅助函数的问题,但它似乎并没有帮助我找到问题。

export class TestUtils {
  public static normalizeWhitespace(str: string): string {
    return str.replace(/[\r\n]+/g, '\n').replace(/\n\s+/g, '\n');
  }
}

我在期望中使用

expect(TestUtils.normalizeWhitespace(outputContent))
  .toEqual(TestUtils.normalizeWhitespace(expectedString));
jasmine karma-jasmine
© www.soinside.com 2019 - 2024. All rights reserved.