Karma和React,有警告导致错误

时间:2015-04-15 13:45:13

标签: reactjs mocha karma-runner karma-mocha

我正在使用Karmamocha来测试我的React组件。当PropTypes不匹配时,我会显示一些警告。然而,让这些警告引起实际错误将是非常有趣的,以便跟踪测试并修复它。

你知道如何实现这一目标吗?

3 个答案:

答案 0 :(得分:16)

您可以使用自己的方法替换console.warn方法,并在提供的消息与特定模式匹配时抛出。

let warn = console.warn;
console.warn = function(warning) {
  if (/(Invalid prop|Failed propType)/.test(warning)) {
    throw new Error(warning);
  }
  warn.apply(console, arguments);
};

答案 1 :(得分:5)

接受答案的小改进:console.error而不是console.warn提及spain-train,添加了“失败的道具类型'到正则表达式,因为它只适用于React 15.3.1,并使代码更加严格友好。

const error = console.error;
console.error = function(warning, ...args) {
  if (/(Invalid prop|Failed prop type)/.test(warning)) {
    throw new Error(warning);
  }
  error.apply(console, [warning, ...args]);
};

答案 2 :(得分:0)

2021 年更新:

const consoleError = console.error;

console.error = function (...args) {

  if (/(Invalid prop|Failed propType|Failed .+ type)/.test(args[0])) {

    const errorMessage = args.reduce((p, c) => p.replace(/%s/, c));

    throw new Error(errorMessage);
  }

  consoleError.apply(console, args);
};

Failed prop type 现在是 Failed %s type: %s%s。它使用 string substitutions 写入控制台。 Here 是 React 中的代码。