2013-04-16 13 views
23

ジャスミンユニットテストを実際に実行するのに問題があるようです。 logLevelをLOG_DEBUGに設定することで、すべてのスクリプトがロードされていることを確認しました。私のユニットテストはサービステスト@https://github.com/angular/angular-seed/blob/master/test/unit/servicesSpec.jsと同じです。ユニットテストを実行していないカルマ

また、私はTestacular(カルマに改名される前)を使用しましたが、この問題を覚えていません。私はChromeを起動させるようですが、手動で「デバッグ」ボタンを押す必要があります。このボタンを押してもテストは実行されません。

システムの詳細:

  • のWindows 7
  • ノードv0.10.4
  • クロム26.0.14
  • カルマ0.8.5(3回の警告でインストール - 精度の2つの損失及びインライン関数の定義がありませんv8 ::永続v8 ::永続::新規(v8 ::ハンドル) ')
'use strict'; 

describe('my services', function() { 
    beforeEach(module('sb.services')); 

    describe('version', function() { 
     it('should return current version', inject(function(version) { 
      expect(version).toEqual('0.0.1'); 
     })); 
    }); 
}); 

はここに私のkarma.conf.jsファイルです:

angular.module('sb.services', []).value('version', '0.0.1').value('amplify', amplify); 
angular.module('sb.directives', []); 
angular.module('sb.filters', []); 
angular.module('sb.controllers', []).controller('SbController', [ 
    '$scope', 
    'amplify', 
    function ($scope, amplify) { 
     $scope.message = 'Hello World! (amplify exists?=' + !!amplify + ')'; 
    } 
]); 
angular.module('sb', [ 
    'sb.services', 
    'sb.directives', 
    'sb.filters', 
    'sb.controllers' 
]); 

はここに私の仕様(テスト/ユニット/ servicesSpec.js)です:10はここに私のモジュールコード(スクリプト/ main.js)です

// Karma configuration 
// Generated on Mon Apr 15 2013 20:56:23 GMT-0400 (Eastern Daylight Time) 


// base path, that will be used to resolve files and exclude 
basePath = ''; 


// list of files/patterns to load in the browser 
files = [ 
    JASMINE, 
    JASMINE_ADAPTER, 
    'Vendor/angular-1.0.6/angular.js', 
    'Vendor/angular-1.0.6/angular-*.js', 
    'Vendor/json2/json2.js', 
    'Vendor/jquery/jquery-1.8.2.js', 
    'Vendor/amplify/amplify.js', 
    'Scripts/main.js', 
    'Test/unit/*.js' 
]; 


// list of files to exclude 
exclude = [ 

]; 


// test results reporter to use 
// possible values: 'dots', 'progress', 'junit' 
reporters = ['progress']; 


// web server port 
port = 9876; 


// cli runner port 
runnerPort = 9100; 


// enable/disable colors in the output (reporters and logs) 
colors = true; 


// level of logging 
// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG 
logLevel = LOG_WARN; 


// 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']; 

junitReporter = { 
    outputFile: 'Test/out/unit.xml', 
    suite: 'unit' 
}; 


// If browser does not capture in given timeout [ms], kill it 
captureTimeout = 60000; 


// Continuous Integration mode 
// if true, it capture browsers, run tests and exit 
singleRun = false; 
+0

私はかなり遅れてこのとだけど、私はあなたがtrueに 'singleRun'または' autoWatch'のいずれかを設定する必要がありますと思いますね。 – fodma1

答えて

11

私の最後の答えは間違っていました(JASMINEとJASMINE_ADAPTER行をangular.js行の下に移動しています)。この特定の問題は修正されましたが、他の問題が作成されました。代わりに、私が何をしたかのようなので、代わりにangular- *の、それが唯一の角度-モックファイルを指定することでした修正する:

JASMINE, 
    JASMINE_ADAPTER, 
    'Vendor/angular-1.0.6/angular.js', 
    'Vendor/angular-1.0.6/angular-mocks.js', 
    'Vendor/json2/json2.js', 
    'Vendor/jquery/jquery-1.8.2.js', 
    'Vendor/amplify/amplify.js', 
    'Scripts/main.js', 
    'Test/unit/*.js' 
+0

rquinnのおかげで、すべての角度のJSファイルを含むと、テストが実行されなかったのはなぜですか? – Darren

+5

これは、エンド・ツー・エンド・テストに使用される角度シナリオ・ファイルのためです。私は、それと角モックファイルとの間に矛盾があると思う。 –

+1

ありがとうございました。私は以下のようにexcludeを使用してシナリオファイルをスキップすることができました。 – Darren

13

はまた、あなたのkarma.conf.jsセクションを除外使用することができます

exclude = [ 
    'Vendor/angular-1.0.6/angular-scenario.js' 
]; 
14

私はちょうど同じ問題を抱えていました。カルマがテストを自動的に実行する前にautoWatch = trueを設定しなければならないことがわかりました。

6

JASMINEとJASMINE_ADAPTERを使用してこの問題を解決しようとしている場合、これは(少なくともKarmaバージョン0.10.2では)サポートされなくなりました。

代わりに使用します。

frameworks: ['jasmine'] 

をあなたのカルマの設定ファイルに。これについてはhereを読むことができます。

私のファイル配列では、パターンとしてincluded: falseを設定していました。 includedは、Javascriptファイルを手動で含める場合(たとえば、require.jsを使用する場合など)にのみ使用されます。そのパターンからすべてのテストをロードすると、テストを含むファイルは決して含まれないので、

PhantomJS 1.9.2 (Linux): Executed 0 of 0 ERROR (0.151 secs/0 secs) 

のようなメッセージが表示されます。含まれている場合のデフォルトはtrueですので、included: falseをファイルパターンから削除すると、このパターンは修正されました。

7

は私がrequirejsを削除私のkarma.conf.jsで...最後になるまで、成功せず、上記のすべての

を試してみました依存関係、例えば:

frameworks: ['jasmine', 'requirejs'], 

へ:

frameworks: ['jasmine'], 
1

で私の場合singleRunfalse

に設定されました

ソリューション // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits singleRun: true

関連する問題