使用jest测试React中SVG元素的无效值错误

时间:2018-04-26 11:54:53

标签: javascript reactjs unit-testing svg jestjs

要测试我的反应应用程序,我正在尝试捕获所有抛出或写入控制台的错误。

如果像<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/

有关如何测试此类错误的任何好主意吗?

1 个答案:

答案 0 :(得分:0)

您可以将模块中的控制台设置为通过global上下文

进行测试
global.console = {error: jest.fn(), log: jest.fn()}

测试看起来像这样:

expect(global.console.error).toHaveBeenCalled()