如何使用Jest和ReactJS获得完整的测试覆盖率,目前为90.48%的报表,58.06%的分支

Gia*_*Elk 6 reactjs jestjs

使用最简单的ReactJS组件,Jest不报告完整的测试覆盖率.如何获取语句和分支显示100%.

目前Jest表示90.48% statements, 58.06% branch.运行jest --coverage.

MyThing.js

import React from 'react';

export default class MyThing extends React.Component {
  render() {
    return (
      <div>
        Stuff
      </div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

MyThing-test.js

// __tests__/MyThing-test.js

jest.unmock('../app/views/static/MyThing');

import React from 'react';
import ReactDOM from 'react-dom';
import TestUtils from 'react-addons-test-utils';

import MyThing from '../app/views/static/MyThing';


describe('MyThing', () => {

    const instance = TestUtils.renderIntoDocument(
        <MyThing />
    );          

  it('gets rendered', () => {    
    expect( TestUtils.isCompositeComponent(instance) ).toBeTruthy();        
  });


  it('is not DOM component', () => {   
   // checks if is a standard DOM element, i.e. <div>
    expect( TestUtils.isDOMComponent(instance) ).not.toEqual(true);    
  });

  it('isElementOfType is React element', () => {  
    expect( TestUtils.isElementOfType(<MyThing />, MyThing) ).toEqual(true);
  });

  it('render()', () => {    
    const retVal = instance.render();

    expect( retVal.type ).toEqual("div");       
  });

});
Run Code Online (Sandbox Code Playgroud)

Jam*_*los 2

这很可能是由于 babel 的转译代码所致。请参阅问题 #817,该问题已得到解决并且最近刚刚得到解决。

这个问题应该通过升级到 来解决jest@15

尽管有些人提到需要向其添加源映射,.babelrc例如:

{
  "env": {
    "test": {
      "sourceMaps": "both"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

并明确更新他们的笑话"coverageCollector": "jest-babel-istanbul"

  • 您好,欢迎来到 stackoverflow。请详细描述答案。当您的答案中有链接时,该页面很可能会被删除,并且您的答案将来对其他人来说毫无用处 (2认同)