«Покрытие Стамбула» относится к концепции покрытия кода при тестировании программного обеспечения. Это метрика, используемая для измерения эффективности тестов путем определения процента кода, который выполняется в процессе тестирования. Istanbul — популярный инструмент покрытия кода для JavaScript. Ниже я предоставлю вам несколько методов создания покрытия кода с помощью Istanbul, а также примеры кода:
Метод 1: использование Istanbul с Mocha и Node.js
Istanbul можно интегрировать с Mocha, популярной средой тестирования JavaScript, для создания отчетов о покрытии кода для приложений Node.js. Вот пример:
# Install dependencies
npm install --save-dev mocha nyc
# Create a test script (e.g., test.js)
# This is a simple test to check if a number is positive
const assert = require('assert');
function isPositive(num) {
return num > 0;
}
describe('isPositive', function() {
it('should return true for positive numbers', function() {
assert.equal(isPositive(5), true);
});
it('should return false for negative numbers', function() {
assert.equal(isPositive(-5), false);
});
});
# Update package.json to include the test script and Istanbul configuration
{
"scripts": {
"test": "mocha --require @babel/register",
"coverage": "nyc --reporter=lcov --reporter=text mocha"
},
"nyc": {
"require": [
"@babel/register"
],
"exclude": [
"/*.spec.js"
],
"reporter": [
"html",
"lcov",
"text"
],
"all": true
}
}
# Run the tests and generate the code coverage report
npm run coverage
Метод 2: использование Istanbul с Jest и React
Если вы используете Jest в качестве среды тестирования для приложений React, вы также можете использовать Istanbul для покрытия кода. Вот пример:
# Install dependencies
npm install --save-dev jest istanbul-lib-instrument istanbul-reports
# Update package.json to include the Jest configuration and Istanbul coverage
{
"scripts": {
"test": "jest --coverage"
},
"jest": {
"collectCoverage": true,
"coverageReporters": [
"json",
"lcov",
"text",
"html"
],
"coverageThreshold": {
"global": {
"branches": 80,
"functions": 80,
"lines": 80,
"statements": 80
}
},
"coverageProvider": "v8",
"transform": {
"^.+\\.jsx?$": "babel-jest"
}
}
}
# Run the tests and generate the code coverage report
npm test
Метод 3: использование Istanbul с Angular и Karma
Для приложений Angular вы можете интегрировать Istanbul с средством выполнения тестов Karma для создания отчетов о покрытии кода. Вот пример:
# Install dependencies
npm install --save-dev karma karma-coverage-istanbul-reporter
# Update karma.conf.js to include the Istanbul coverage reporter
module.exports = function(config) {
config.set({
plugins: [
'karma-jasmine',
'karma-chrome-launcher',
'karma-coverage-istanbul-reporter'
],
reporters: ['progress', 'coverage-istanbul'],
coverageIstanbulReporter: {
reports: ['html', 'lcovonly', 'text-summary'],
dir: path.join(__dirname, 'coverage'),
fixWebpackSourcePaths: true
},
// Rest of the Karma configuration
});
};
Это всего лишь несколько примеров того, как вы можете использовать Istanbul для покрытия кода в различных средах JavaScript. Не забудьте адаптировать примеры в соответствии со структурой и требованиями вашего конкретного проекта.