Monday, June 3, 2024
64
rated 0 times [  65] [ 1]  / answers: 1 / hits: 34662  / 7 Years ago, thu, september 7, 2017, 12:00:00

I'm using Jest with the coverage option on and I'm getting:



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


So I have 17 uncovered lines, but I'm not sure how to cover them.



progress-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


progress-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)
})
})


So I'm testing the argument and return values.



How do I fully test this function, including the 17 lines..?


More From » unit-testing

 Answers
2

Ok, I am now sitting in the corner with my dunce hat on.



Found this: https://github.com/istanbuljs/nyc/issues/35#issuecomment-121008298



Uncovered Lines = 17 isn't a count of the uncovered lines, it's a list with only one value, that is, line 17: total: total || 1,.



Fixed with...



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

[#56549] Tuesday, September 5, 2017, 7 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
yulisa

Total Points: 436
Total Questions: 102
Total Answers: 123

Location: Palau
Member since Tue, May 30, 2023
1 Year ago
yulisa questions
Sun, Jun 20, 21, 00:00, 3 Years ago
Wed, Apr 14, 21, 00:00, 3 Years ago
Fri, Aug 7, 20, 00:00, 4 Years ago
Mon, Mar 23, 20, 00:00, 4 Years ago
;