Не удается импортировать @testing-library/jest-dom, expect.extend не является функцией

#reactjs #react-testing-library #jest-dom

Вопрос:

Я пытаюсь добавить @testing-library/jest-dom что — то в свой проект, но безуспешно. Он устанавливается yarn в мои зависимости разработки и импортируется в setupTests.js с:

 import '@testing-library/jest-dom';
 

Тест завершается неудачей с:

 Invalid Chai property: toBeDisabled

  40 |     it('should be disabled', async () => {
  41 |       const button = screen.getByRole('button', { name: 'Create button' });
> 42 |       expect(button).toBeDisabled();
     |       ^
  43 |     });
  44 |   });
 

Где я ошибаюсь?

Комментарии:

1. можете ли вы попробовать ожидать(кнопка).быть.отключенным() ?

2. @ManishSoni, похоже, ОП хочет использовать Шутку для этого теста. Изменение вызова устранило бы ошибку, но запустило бы тест с Чаем.

Ответ №1:

Похоже, вы используете и Чай, и Шутку в одном и том же наборе тестов, оба из которых имеют expect функцию. В этом тесте вы ожидаете использовать Шутку, но это называется Чай. Чай expect не имеет toBeDisabled свойства функции, поэтому возникает ошибка.

Вы также импортируете чай в этот файл? Если это так, удалите этот импорт. Если вам нужны обе платформы тестирования, я бы рекомендовал разделить ваши тесты на разные файлы, чтобы в одном файле вы выполняли тесты только с одной платформой.

Комментарии:

1. Ах, я и не знал, что у них обоих есть expect ! Это все ясно объясняет, спасибо! Я изменил его expect(button.disabled).to.be.true() , чтобы он работал, как и ожидалось. Цените, что это не шутка, но ваш ответ объяснил первопричину.