2016-06-10 3 views
6

С простейшим компонентом ReactJS Jest не сообщает о полном тестировании. Как получить заявления и ответвление, чтобы показать 100%.Как получить полное тестовое покрытие с помощью Jest и ReactJS, в настоящее время составляет 90,48%, ответвление 58,06%

В настоящее время 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> 
    ); 
    } 
} 

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

}); 
+1

Незнайки, может быть, не каждый кусок кода существу 100% охвата –

+3

@RobertMoskal Я думаю, вам нужно немного прочитать мой пример кода. В моем классе нет ничего, что не должно было на 100% покрываться моими испытаниями Jest. Я могу только догадываться, что это ошибка с Jest, или Jest также смотрит на код, который не выполняется в суперклассе в 'React.Component'. –

+0

ожидать (retVal.props.children.length). ToEqual (1); – vijayst

ответ

1

Это, скорее всего, из-за transpiled кода от Бабеля. См. issue #817, где эта проблема была обработана и только что разрешена.

Это должно быть исправлено с обновлением до [email protected].

Хотя некоторые люди говорили о необходимости добавления sourcemaps к их .babelrc, такие как:

{ 
    "env": { 
    "test": { 
     "sourceMaps": "both" 
    } 
    } 
} 

и обновлять их шуткой явно с "coverageCollector": "jest-babel-istanbul"

+1

Привет, добро пожаловать в stackoverflow. Пожалуйста, опишите ответы больше. когда у вас есть ссылка в вашем ответе, вероятно, что страница будет удалена, и ваш ответ станет бесполезным для других людей в будущем –