javascript - 特定组件中的 'expecting to render' 测试代码覆盖率较低

标签 javascript reactjs unit-testing jestjs enzyme

我正在使用 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

最佳答案

快照测试仅涵盖渲染的项目,通常不考虑类中的其他方法。您可以调用instance方法,并检查是否 stubbed Prop 被称为,即:

这是一个 enzyme's shallow renderer 的例子:

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();
    });
});

您可能还想测试 stub 是否被调用 with specific arguments .

此外,检查项目中的 coverage 文件夹 - 应该有关于(未)涵盖内容的详细报告。

关于javascript - 特定组件中的 'expecting to render' 测试代码覆盖率较低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53870098/

相关文章:

javascript - 是什么阻止 HtmlUnit 加载 PSN 商店页面?

javascript - 计数按钮使用纯 javascript Ajax 将当前页面 URL 传递给 php 变量

javascript - 对滚动阻塞 'touchstart' 的 react 警告非被动事件监听器

java - 单元测试 : assert not work?

ios - 如何对 NSFetchedResultsControllerDelegate 进行单元测试?

javascript - 使用 JS 或 JQUERY 选择页面加载时的第一个 html 表行

javascript - 决定 CSS 过渡的顺序

reactjs - 如何使用 React Js 更改 SASS 变量值?

python - 如何在单元测试中测试 Airflow dag?

javascript - 在服务器-客户端往返期间存储(或传递)Element/TableCell 引用