我正在使用Karma和mocha来测试我的React组件。当PropTypes不匹配时,我会显示一些警告。然而,让这些警告引起实际错误将是非常有趣的,以便跟踪测试并修复它。
你知道如何实现这一目标吗?
答案 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 中的代码。