2017-09-07 1 views
2

J'utilise Jest avec l'option de couverture sur et je reçois:Jest Uncovered Lines - Comment tester ces lignes ..?

--------------------------|----------|----------|----------|----------|----------------| 
File      | % Stmts | % Branch | % Funcs | % Lines |Uncovered Lines | 
--------------------------|----------|----------|----------|----------|----------------| 
progress-bar.js   |  100 |  75 |  100 |  100 |    17 | 
--------------------------|----------|----------|----------|----------|----------------| 

J'ai donc 17 lignes non couvertes, mais je ne suis pas sûr de savoir comment les couvrir.

progrès-bar.js

import ProgressBar from 'progress' 
import isNumber from 'lodash/isNumber' 
import config from '../../config/global' 

function progressBar (total) { 
    if (!isNumber(total)) throw new Error(`progressBar() 'total' arg is not a number.`) 

    const barCfg = config.progressBar 

    const tokens = `${barCfg.bar} ${barCfg.info}` 

    const options = { 
    width: barCfg.width, 
    total: total || 1, 
    complete: barCfg.complete, 
    incomplete: barCfg.incomplete 
    } 

    const bar = new ProgressBar(tokens, options) 

    bar.render() 

    return bar 
} 

export default progressBar 

progrès-bar.test.js

import ProgressBar from 'progress' 
import progressBar from './progress-bar' 

describe('progressBar()',() => { 
    test('returns instanceof ProgressBar',() => { 
    const actual = progressBar(5) instanceof ProgressBar 
    const expected = true 
    expect(actual).toBe(expected) 
    }) 

    test('throw error if arg "total" is not a number',() => { 
    expect(() => { progressBar('moo') }).toThrow() 
    expect(() => { progressBar(null) }).toThrow() 
    }) 

    test('progress bar progress/ticking',() => { 
    const bar = progressBar(5) 
    expect(bar.total).toBe(5) 
    expect(bar.curr).toBe(0) 
    bar.tick() 
    expect(bar.curr).toBe(1) 
    bar.tick() 
    expect(bar.curr).toBe(2) 
    bar.tick() 
    expect(bar.curr).toBe(3) 
    bar.tick() 
    expect(bar.curr).toBe(4) 
    bar.tick() 
    expect(bar.curr).toBe(5) 
    expect(bar.complete).toBe(true) 
    }) 
}) 

donc je teste l'argument et les valeurs de retour. Comment tester complètement cette fonction, y compris les 17 lignes ..?

Répondre

6

Ok, je suis maintenant assis dans le coin avec mon chapeau dunce.

trouvé ceci: https://github.com/istanbuljs/nyc/issues/35#issuecomment-121008298

Lignes non couvertes = 17 n'est pas un compte des lignes non couvertes, il est une liste avec une seule valeur, qui est, la ligne 17: total: total || 1,.

fixe avec ...

test('passing zero forces the default total of 1',() => { 
    const bar = progressBar(0) 
    expect(bar.total).toBe(1) 
}) 
+0

J'ai eu des millions de lignes non couvertes et pensé graphiques de dépendance sont fous dans JS :) – three