Насмешка в шутке: Предупреждение: у каждого ребенка в списке должна быть уникальная «ключевая» опора - PullRequest
1 голос
/ 12 марта 2019

Я написал тесты, которые вызывают предупреждение React

Warning: Each child in a list should have a unique "key" prop.

Я знаю, почему есть это предупреждение, но мне нужно проверить этодело.Но я не хочу видеть предупреждение при запуске моих тестов.

Как мне написать макет, который скрывает это сообщение, или даже позволить мне шпионить за ним, чтобы я мог видеть его там?

Я использую React и Jest

1 Ответ

1 голос
/ 12 марта 2019

Предупреждающее сообщение регистрируется 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
  });
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...