тестирование реагирующего компонента с шуткой и энзимом, проблема с покрытием - PullRequest
0 голосов
/ 21 октября 2018

У меня есть простой компонент (выберите), который принимает список параметров.Внутри я отображаю список с помощью карты.Я тестирую компонент, используя шутки и энзимы, и делаю снимок.К сожалению, покрытие жалуется на карту и функцию внутри нее, которая производит элементы option.

Как правильно проверить это, чтобы иметь 100% покрытие?

покрытие:

-------------------|----------|----------|----------|----------|-------------------|
File               |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
-------------------|----------|----------|----------|----------|-------------------|
  BookList.js      |    83.33 |      100 |       50 |      100 |                   |
  BookListItem.js  |      100 |      100 |      100 |      100 |                   |

BookList.js

import React from 'react';
import { shape, string, arrayOf } from 'prop-types';

import BookListItem from './BookListItem';

const renderBookItems = book => <BookListItem
  key={book.id}
  title={book.volumeInfo.title}
/>;

const BookList = ({ books }) => <div>{books.map(renderBookItems)}</div>;

BookList.displayName = 'BookList';
BookList.propTypes = {
  books: arrayOf(shape({
    volumeInfo: shape({
      title: string,
    }),
    id: string,
  })),
};

export default BookList;

BookList.test.js

import React from 'react';
import { shallow } from 'enzyme';

import BookList from './BookList';

describe('<BookList />', () => {
  it('should match snapshot', () => {
    const wrapper = shallow(<BookList books={[]} />);
    expect(wrapper).toMatchSnapshot();
  });
});

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

В конце концов, я обнаружил проблему в ферментном репо, которая указала мне путь.

Я немного изменил свои тесты, чтобы принять во внимание визуализацию BookListItem

import React from 'react';
import { shallow } from 'enzyme';

import BookList from './BookList';
import BookListItem from './BookListItem';

const bookList = [
  {
    id: '1234qwer',
    volumeInfo: {
      title: 'A Book'
    }
  },
  {
    id: '1235qwer',
    volumeInfo: {
      title: 'A Book 2'
    }
  }
];

describe('<BookList />', () => {
  const wrapper = shallow(<BookList books={bookList} />);

  it('matches a snapshot', () => {
    expect(wrapper).toMatchSnapshot();
  });

  it('has 2 BookListItem elements', () => {
    const items = wrapper.find(BookListItem);
    expect(items.length).toEqual(2);
  });
});

Спасибо @ oliver.voron за ваш ответ, даже если я прочитал его после того, как решил свою проблему:)

0 голосов
/ 21 октября 2018

Фермент мелкий не будет оказывать renderBookItems.Таким образом, ваш тест охватывает только BookList, и вам нужно добавить дополнительный тест для renderBookItems.

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