2017-01-20 13 views
1

私はカルマでジャスミンを使用して、Angular 1.5.7アプリケーションのテストを作成しています。カルマでのジャスミンテストでAngularJSを使用

karma.conf.jsファイルまたはtest-main.jsファイルからAngularJSを参照して、テストに使用できることを確認するにはどうすればよいですか?

私は現在ユニットテストを実行できますが、テストで参照されるファイルがAngularJS(つまりimport angular from 'angular')を参照している場合、AngularJSが見つかりません。

私はbabelを使用してES5に移行しており、インポートはRequireJS AMDに変換されています。

エラーは次のとおりです。

ERROR: 'There is no timestamp for /base/angular.js!' 

私はtest-main.jsのパスセクションにAngularJSを追加した場合、私は別のエラーを取得:

TypeError: undefined is not an object (evaluating '_angular2.default.module') 

私は、テスト対象の文からimport angular from 'angular';を削除した場合次のエラーが表示されます。

ReferenceError: Can't find variable: angular 

私のtest-main

var TEST_REGEXP = /(spec|test)\.js$/i; 
var allTestFiles = []; 

Object.keys(window.__karma__.files).forEach(function(file) { 
    if (TEST_REGEXP.test(file)) { 
     var normalizedTestModule = file.replace(/^\/base\/|\.js$/g, ''); 
     allTestFiles.push(normalizedTestModule); 
    } 
}); 

var cdn = 'http://localhost:55635/modules/'; 

require.config({ 
    baseUrl: '/base', 

    initialRequire: [], 

    globals: { 
     'es6-promise': '3.2.1', 
    }, 

    paths: { 
     'lodash': cdn + 'lodash/2.4.1/lodash' 
    }, 

    shim: {}, 

    deps: allTestFiles, 

    callback: window.__karma__.start 
}); 

マイkarma.conf.js

'node_modules/angular/angular.js', 
'node_modules/angular*/*.js', 

karma.conf.jsであなたのファイルの配列に:

var path = require('path'); 

module.exports = function(config) { 
    'use strict'; 
    var cdn = 'http://localhost:55635/modules/'; 
    var basePath = path.dirname(__filename); 

    config.set({ 
     basePath: '', 
     frameworks: [ 
      'requirejs', 
      'jasmine' 
     ], 
     files: [ 
      { 
       pattern: cdn + 'my-lib/version/my-lib.js', 
       included: false 
      }, 
      { 
       pattern: 'test-transpiled/**', 
       included: false 
      }, 
      /** 
      * This is needed because PhantomJS does not support window.Promise. 
      */ 
      'node_modules/babel-polyfill/dist/polyfill.js', 
      'dist/artifacts/my-lib.js', 
      'test/unit/test-main.js', 
     ], 
     proxies: { 
      '/cdn/': cdn 
     }, 
     exclude: [], 
     preprocessors: {}, 
     reporters: ['dots'], 
     colors: true, 
     autoWatch: false, 
     singleRun: true, 
     browsers: ['PhantomJS'], 
    }); 
}; 

答えて

0

はあなたが含まれるようにしようとしたことがありますか?

files: [ 
      { 
       pattern: cdn + 'my-lib/version/my-lib.js', 
       included: false 
      }, 
      { 
       pattern: 'test-transpiled/**', 
       included: false 
      }, 
      /** 
      * This is needed because PhantomJS does not support window.Promise. 
      */ 
      'node_modules/babel-polyfill/dist/polyfill.js', 
      'dist/artifacts/my-lib.js', 
      'test/unit/test-main.js', 

      'node_modules/angular/angular.js', 
      'node_modules/angular*/*.js', 
     ], 

これは、カルマの設定にすべての角度依存性が含まれていることがわかりました。

希望に役立ちます!

関連する問題