одиночная команда istanbul для нескольких сценариев (или комбинированных отчетов покрытия)

1

Я хотел бы запустить несколько тестов в своем собственном процессе и как-то объединить отчеты istanbul.

Например, две реализации:

//sut1.js
'use strict'
module.exports = function() {
  return 42
}

а также

//sut2.js
'use strict'
module.exports = function() {
  return '42'
}

и два теста:

//test1.js
'use strict'
const expect = require('chai').expect
const sut1 = require('./sut1.js')
expect(sut1()).to.equal(42)
expect(sut1()).not.to.equal('42')
console.log('looks good')

а также:

//test2.js
'use strict'
const expect = require('chai').expect
const sut2 = require('./sut2.js')

describe('our other function', function() {
  it('should give you a string', function() {
    expect(sut2()).to.equal('42')
  })

  it('should not give a a number', function () {
    expect(sut2()).not.to.equal(42)
  })
})

Я могу получить отчет о покрытии для одного из них:

istanbul cover --print both test1.js
istanbul cover --print both -- node_modules/mocha/bin/_mocha test2.js

Каков самый простой способ получить сводный отчет о покрытии? Есть ли один вкладыш, который также будет выводить его?

С моккой или жасмином вы можете просто передать несколько файлов, но здесь я хочу фактически запустить разные скрипты.

Теги:
testing
code-coverage
istanbul

1 ответ

2

Если кто-то заинтересован, ответ:

  • не используйте Стамбул; используйте nyc - чтобы вы могли передавать ему исполняемые файлы, а не только файлы javascript
  • положить два теста в файл bash вместе и запустить его с Стамбулом

...

#!/bin/sh
# test.sh
node test1.js
node_modules/mocha/bin/mocha test2.js

а потом иди так

nyc ./test.sh

и вы увидите комбинированный тестовый вывод:

----------|----------|----------|----------|----------|----------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines |Uncovered Lines |
----------|----------|----------|----------|----------|----------------|
All files |      100 |      100 |      100 |      100 |                |
 sut1.js  |      100 |      100 |      100 |      100 |                |
 sut2.js  |      100 |      100 |      100 |      100 |                |
 test1.js |      100 |      100 |      100 |      100 |                |
 test2.js |      100 |      100 |      100 |      100 |                |
----------|----------|----------|----------|----------|----------------|

Вы также можете сделать это в сценариях package.json следующим образом:

"_test": "node test1.js && mocha test2.js",
"test": "nyc npm run _test",

Ещё вопросы

Сообщество Overcoder
Наверх
Меню