TypeError: Невозможно прочитать свойство 'have' из неопределенного - PullRequest
0 голосов
/ 09 сентября 2018

Я получаю эту ошибку в моем ферментном тесте React - TypeError: Cannot read property 'have' of undefined

Ниже мой тестовый файл:

import React from 'react';
import ReactDOM from 'react-dom';
import { mount } from 'enzyme';
import TransactionsTable from './TransactionsTable';

import Pagination from './Pagination';

it('contains a table', () => {
  const wrapper = mount(<TransactionsTable />);
  expect(wrapper.find(Pagination)).to.have.lengthOf(1);
});

Я не вижу, чем мой код отличается от решений, которые я видел до этого. Также, похоже, в соответствии с документами. Что-то, что я пропустил?

UPDATE

Я также пытался исправить следующее (для Jest), но у меня огромный вывод красного:

const wrapper = mount(<TransactionsTable />);
expect(wrapper.find(Pagination)).toHaveLength(1);

Ошибка:

FAIL  src/components/includes/TransactionsTable.test.js
  ● <TransactionsTable /> › contains a table

    expect(received).toHaveLength(length)

    Expected value to have length:
      1
    Received:
      {Symbol(enzyme.__unrendered__): null, Symbol(enzyme.__renderer__): {"batchedUpdates": [Function batchedUpdates], "getNode": [Function getNode], "render":...

Кажется, сейчас правильный вызов метода (toHaveLength), но теперь я неправильно передаю компонент Pagination?

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

Я полагаю, что ошибка, появившаяся после того, как вы применили допустимое сопоставление, появляется из-за того, что фермент не может найти Pagination компонент в TransactionsTable. toHaveLength Jest matcher выдает странный вывод, когда он терпит неудачу при использовании с оберткой энзима. Попробуйте использовать следующее утверждение

expect(wrapper.find(Pagination).length).toBe(1);

и держу пари, вы получите сообщение об ошибке, что ожидаемое значение равно 1, но 0 получено.

PS: здесь - проблема в репозитории Jest о странном выводе.

0 голосов
/ 09 сентября 2018

Это зависит от того, какой тестовый прогон или библиотека утверждений вы используете.

Для Jest вы хотите использовать toHaveLength

it('contains a table', () => {
  const wrapper = mount(<TransactionsTable />);
  expect(wrapper.find(Pagination)).toHave.lengthOf(1);
});

Где значение chai будет to.have.lengthOf (1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...