@zaabalonso'ya katılıyorum ki Karma doğru seçimdir. LCOV raporları istediğiniz için, karma-coverage eklentisine de ihtiyacınız olacak ve CI'da başsız çalışmak istediğinizi varsayarak muhtemelen karma-phantomjs-launcher'u isteyeceksiniz. Karma-cli (npm install -g karma-cli
) ile her zaman karma komut satırından doğrudan çalıştırabildiğinizden Grunt ile koşmak isteğe bağlıdır. (RequireJS ile)
bir temel kurulum şöyle görünür:
package.json
{
"private": "true",
"devDependencies": {
"grunt": "^0.4.5",
"grunt-jasmine-node": "^0.3.1",
"grunt-karma": "^0.10.1",
"jasmine-core": "^2.3.4",
"karma": "^0.12.32",
"karma-coverage": "^0.3.1",
"karma-jasmine": "^0.3.5",
"karma-phantomjs-launcher": "^0.1.4",
"karma-requirejs": "^0.2.2",
"requirejs": "^2.1.17"
}
}
karma.conf.js (preprocessors
ve coverageReporter
bölümlerini dikkat
module.exports = function(config) {
config.set({
basePath: '.',
frameworks: ['jasmine', 'requirejs'],
files: [{
pattern: 'src/**/*.js',
included: false
}, {
pattern: 'spec/**/*.js',
included: false
},
"test-main.js"],
preprocessors: {
'src/**/*.js': ['coverage']
},
reporters: ['progress', 'coverage'],
coverageReporter: {
// specify a common output directory
dir: 'build/reports/coverage',
reporters: [
{ type: 'lcov', subdir: 'report-lcov' },
{ type: 'lcovonly', subdir: '.', file: 'report-lcovonly.txt' }
]
},
browsers: ['PhantomJS']
});
};
test-main.j s
var allTestFiles = [];
var TEST_REGEXP = /^\/base\/spec\/\S*(spec|test)\.js$/i;
var pathToModule = function (path) {
return path.replace(/^\/base\//, '').replace(/\.js$/, '');
};
Object.keys(window.__karma__.files).forEach(function (file) {
if (TEST_REGEXP.test(file)) {
// Normalize paths to RequireJS module names.
allTestFiles.push(pathToModule(file));
}
});
require.config({
// Karma serves files under /base, which is the basePath from your config file
baseUrl: '/base/',
enforceDefine: true,
xhtml: false,
waitSeconds: 30,
// dynamically load all test files
deps: allTestFiles,
callback: window.__karma__.start
});
Gruntfile.js
module.exports = function(grunt) {
grunt.initConfig({
karma: {
unit: {
configFile: 'karma.conf.js',
options: {
singleRun: true
}
}
}
});
grunt.loadNpmTasks('grunt-karma');
grunt.registerTask('default', ['karma:unit']);
};
Sen karma start
ile testler komut satırı çalıştırabilirsiniz (eğer Grunt kullanmak istiyorsanız İsteğe bağlı). Bu karma sunucuyu başlatacak ve testleri bir kez gerçekleştirecek. Sunucunuzu güncel tutacak ve kaynaklarınızı veya test kaynaklarınızı değiştirdiğinizde testleri yeniden çalıştıracaktır. Eğer testi sadece bir kez (CI'de) çalıştırmak istiyorsanız, sadece karma start --single-run
'u çalıştırın. Aynı zamanda bunu yapacak
Bu iyi bir çözümdür, ancak aslında test etmek için bir NODE envim var, bu yüzden testi çalıştırmak için bir tarayıcı kullanabilirim, bu yüzden bunu Karma olmadan yapmam gerekiyor, bunu yapmak için herhangi bir yol biliyor musunuz? –