私はジャスミンと一緒にカルマを使用していて、オンラインガイドに従ってインストールして
npm install --save-dev karma
およびその他の必需品
私は走った
./node_modules/karma/bin/karma start
そして
karma start karma.conf.js
これは外部のchromeブラウザを開き、カルマが接続されていることを示しています。関数の1つに簡単な単体テストを作成しましたが、テストがまったく実行されていないようです。
これは私のカルマ設定ファイルです。
// Karma configuration
module.exports = function(config) {
config.set({
// base path, that will be used to resolve files and exclude
basePath: '',
// testing framework to use (jasmine/mocha/qunit/...)
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'app/assets/components/angular/angular.js',
'app/assets/components/angular-mocks/angular-mocks.js',
'app/assets/javascripts/**/**/*.js',
'spec/javascripts/**/*.js'
],
// list of files / patterns to exclude
exclude: [],
// web server port
port: 8080,
// level of logging
// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: false,
// Start these browsers, currently available:
// - Chrome
// - ChromeCanary
// - Firefox
// - Opera
// - Safari (only Mac)
// - PhantomJS
// - IE (only Windows)
browsers: ['Chrome'],
// Continuous Integration mode
// if true, it capture browsers, run tests and exit
singleRun: false
});
};
私のユニットテスト
describe('Unit: AddMedicalService',function(){
beforeEach(module('DoctiblePreTreatment'));
var ctrl, scope;
beforeEach(inject(function($controller,$rootScope){
scope = $rootScope.$new();
ctrl = $controller('AddMedicalServiceModalCtrl',{
$scope: scope
});
}));
it('should create return true if var 1 is greater than var2 , false if other wise',
function(){
var compare1 = function(){
var var1 = 1;
var var2 = 0;
return var1 > var2;
}
var compare2 = function(){
var var1 = 0;
var var2 = 1;
return var1 > var2;
}
expect(compare1).toBeTruthy();
expect(compare2).toBeFalsy();
});
});
テストしようとしているコントローラーの特定の機能
(function() {
app.controller('AddMedicalServiceModalCtrl',['ProviderMedicalService','Treatment','$scope','$modalInstance',function(ProviderMedicalService,Treatment,$scope,$modalInstance){
$scope.newTreatment = {}
$scope.checkless = function(var1,var2){
var1 = parseInt(var1);
var2 = parseInt(var2);
if(var1 > var2){
return true;
}
else{
return false;
}
}
}]);
})();
カルマを実行するとコンソールに何が表示されますか
INFO [karma]: Karma v0.12.21 server started at http://localhost:8080/
INFO [launcher]: Starting browser Chrome
INFO [Chrome 36.0.1985 (Mac OS X 10.9.4)]: Connected on socket MkqZfXcO6iIX4Od23QEr with id 9498055
追加情報:RailsでRubyを使用してangular-jsを使用しています。私を助けることができるジャスミンの宝石があることを知っています。しかし、上司は私たちが使用してみるべきだと主張しましたkarmaは、anuglarjs部分のユニットテスト/ E2EとRailsのrspecを実行します。
下 karma.config.js
、singleRun
またはautoWatch
のいずれかをtrue
に設定します。あなたの場合、両方ともfalseに設定されているため、カルマはテストを実行していません。
singleRun: trueの場合、ブラウザをキャプチャし、テストを実行して、0の終了コード(すべてのテストに合格した場合)または1の終了コード(いずれかのテストが失敗した場合)で終了します。
singleRun: true
autoWatch:ファイルの監視と、これらのファイルの1つが変更されるたびにテストを実行することを有効または無効にします。あなたがあなたのファイルを見たい場合に備えて。
autoWatch: true
次の構成は私のために働きます-
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO, // config.LOG_DEBUG,
autoWatch: true,
browsers: ['ChromeNS'],
singleRun: false,
customLaunchers: {
ChromeHeadlessNS: {
base: 'ChromeHeadless',
flags: ['--no-sandbox', '--disable-gpu']
},
ChromeNS: {
base: 'Chrome',
flags: ['--no-sandbox', '--disable-gpu']
}
}