要测试我的反应应用程序,我正在尝试捕获所有抛出或写入控制台的错误。
如果像<p>
这样的普通HTML元素包含<p color={false}></p>
之类的无效属性,则会在console.error
上打印错误,我可以像这样测试(我正在使用与酶的玩笑):
it("renders without error", () => {
jest.spyOn(console, "error");
mount(<p color={true}>asdf</p>);
expect(console.error).toHaveBeenCalled();
});
现在,如果我想测试SVG元素中的无效值,请执行以下操作:
<svg>
<rect width={-1}/>
</svg>
我的测试不起作用,因为错误不是使用console.error
打印的,我无法落后于打印它。
要重现错误,可以检查此小提琴上的控制台输出:https://jsfiddle.net/uu1j4ksa/
有关如何测试此类错误的任何好主意吗?
答案 0 :(得分:0)
您可以将模块中的控制台设置为通过global
上下文
global.console = {error: jest.fn(), log: jest.fn()}
测试看起来像这样:
expect(global.console.error).toHaveBeenCalled()