25

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

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

システムの詳細:

  • ウィンドウズ7
  • ノード v0.10.4
  • クローム 26.0.14
  • Karma 0.8.5 (3 つの警告付きでインストールされました -- 2 つの精度の損失と 1 つの「インライン関数 v8::Persistent v8::Persistent::New(v8::Handle) の定義がありません」)

これが私のモジュール コードです (Scripts/main.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'
]);

これが私の仕様です(Test/unit/servicesSpec.js):

'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 ファイルがあります:

// 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;
4

6 に答える 6

15

autoWatch = true同じ問題が発生したばかりで、カルマがテストを自動的に実行する前に設定する必要があることがわかりました.

于 2013-09-14T06:34:41.673 に答える
14

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

exclude = [
  'Vendor/angular-1.0.6/angular-scenario.js'
];
于 2013-06-15T02:47:45.760 に答える
12

私の最後の答えは間違っていました (JASMINE および JASMINE_ADAPTER 行を angular.js 行の下に移動しました)。この特定の問題は修正されましたが、他の問題が発生しました。代わりに、次のように、angular-* の代わりに angular-mocks ファイルのみを指定することで修正しました。

   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'
于 2013-04-16T21:56:11.153 に答える
9

上記のすべてを試してみましたが、最終的には成功しませんでした...

私の場合、 requirejsの依存関係karma.conf.jsを削除しました。

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

に:

    frameworks: ['jasmine'],
于 2015-02-20T12:33:34.350 に答える
7

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

代わりに次を使用します。

frameworks: ['jasmine']

Karma 設定ファイルで。これについては、ここで読むことができます。

included: falseまた、ファイル配列でパターン を設定したこともわかりました。includedJavascript ファイルを手動でインクルードする場合 (たとえば、require.js を使用する場合) にのみ使用されます。すべてのテストがそのパターンからロードされる場合、次のようなメッセージが表示されます。

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

テストを含むファイルは含まれないためです。included: falseが指定されていない場合のデフォルトは であるため、私のパターンのファイル配列から を削除すると、これが修正されtrueました。

于 2013-10-14T21:51:35.697 に答える