我编写了触发React
警告的测试
Warning: Each child in a list should have a unique "key" prop.
我知道为什么会有这个警告,但是我需要测试这种情况。但是我不想在运行测试时看到警告。
我该如何编写一个隐藏该消息的模拟程序,或者甚至让我监视它,以便可以看到它?
我正在使用React
和Jest
答案 0 :(得分:1)
警告消息由console.error
记录下来,因此您可以将console.error
替换为spy
并检查是否已用预期的警告调用了该消息:
import * as React from 'react';
import { shallow } from 'enzyme';
const List = () => (
<ul>
{[1, 2, 3].map((val) => (<li>item {val}</li>))}
</ul>
);
describe('console.error check', () => {
let savedError;
beforeEach(() => {
savedError = console.error; // save the real console.error
console.error = jest.fn(); // replace it with a spy
});
afterEach(() => {
console.error = savedError; // restore the real console.error
});
it('should call console.error with the warning', () => {
shallow(<List />);
expect(console.error).toHaveBeenCalled(); // SUCCESS
expect(console.error.mock.calls[0][0].startsWith('Warning: Each child in a list should have a unique "key" prop.')).toBe(true); // SUCCESS
});
})