Karma 和 React,有导致错误的警告

IT技术 reactjs mocha.js karma-runner karma-mocha
2021-05-21 14:22:10

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

你知道这是如何实现的吗?

3个回答

您可以用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);
};

对接受的答案的小改进:console.error而不是console.warnspain-train提到的那样,向正则表达式添加了“失败的props类型”,因为只有这样它才能与 React 15.3.1 一起使用,并使代码更加严格的 eslint 友好。

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]);
};

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它使用字符串替换来写入控制台。是 React 中的代码。