Покрытие кода должно быть минимальным для теста «ожидающих рендеринга» в конкретном компоненте - PullRequest
0 голосов
/ 20 декабря 2018

Я пишу простой тест для определенного компонента моего приложения, используя react-test-render, и тест ожидает рендеринга компонента.

Я попытался реализовать свойства, необходимые для компонентав тестовом файле и до сих пор нет результатов, охват тестирования компонента по-прежнему на низком уровне.тест проходит успешно, я думаю, что проблема в функциях.

   class Component extends React.PureComponent { 
        constructor(props, context) {
            super(props, context);

            this.function1 = this.function1.bind(this);
            this.function2 = this.function2.bind(this);
        }

        handleRef(element) {
            const { var1 } = this.props;

            this.iframe = element;
            if (var1) {
                var1(element);
            }
        }

        function2() {
            const {
                var2,
                var3,
                var4,
            } = this.props;

           if (!var2(this.iframe) && var3) {
           var3();
           localytics.tagEvent({ pageName: 'string' });
           return;
       }

       if (var3) {
            var3();
            performanceLog('The iframe has loaded at: ');
            localytics.tagEvent({ pageName: 'homepage:ok' });
       }
   }

       render() {

        //render html

     }
 }

AppFrame.propTypes = {
   //proptypes 
};

 AppFrame.defaultProps = {
      //default props
 };

 export default withStyles(styles)(AppFrame);

код теста:

import React from 'react';
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16.3';
import renderer from 'react-test-renderer';

import AppFrame from '../index';

configure({ adapter: new Adapter() });

describe('<AppFrame />', () => {
   it('Expect to render', () => {
     const renderedComponent = renderer.create(
        <AppFrame var1="test" var2={() => {}} />
     ).toJSON();

expect(renderedComponent).toMatchSnapshot();
});
});

скриншот покрытия теста: coverage

1 Ответ

0 голосов
/ 22 декабря 2018

Тестирование снимков охватывает только визуализированные элементы, обычно оно не учитывает другие методы в классе.Вы можете вызвать методы instance и проверить, был ли вызван stubbed props, то есть:

Вот пример с мелким рендерером энзима :

import { shallow } from 'enzyme';

describe('<AppFrame />', () => {
  const onErrorStub = jest.fn();

  it('Expect to render', () => {
    const renderedComponent = shallow(
       <AppFrame
          src="test"
          onLoad={() => {}}
          onError={onErrorStub}
          isLoadedSuccessfully={() => false} />
    );

    renderedComponent.instance().handleOnLoad();
    expect(onErrorStub).toBeCalled();
    });
});

Вы также можете проверить, были ли вызваны заглушки с конкретными аргументами .

Кроме того, проверьте папку coverage в вашем проекте - там должно бытьподробный отчет о том, что покрывается (не).

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