Karma + Jasmineを使用して単体テストを作成しようとしていますが、角度モックでエラーが発生しています。グラントテストを実行すると、次のエラーが発生します。
PhantomJS 1.9.8(Mac OS X)ERROR TypeError: 'undefined' is not a object(evaluating 'angular.mock = {}')at/Users/danielbogart/Documents/coding/work/AexNav/bower_components/angular-mocks/angular-> mocks.js:17 Chrome 39.0.2171(Mac OS X 10.9.4))エラーUncaught TypeError:/ Users/danielbogart/Documents/codingでundefinedのプロパティ 'mock'を設定できません/work/AexNav/bower_components/angular-mocks/angular->mocks.js:17
Gruntfile karma config:
karma: {
options: {
frameworks: ['jasmine'],
files: [
'dom_munger.data.appjs',
'tests/spec/*.js',
'bower_components/angular-mocks/angular-mocks.js'
],
logLevel: 'ERROR',
reporters: ['mocha'],
autoWatch: false, //watching is handled by grunt-contrib-watch
singleRun: true
},
all_tests: {
browsers: ['PhantomJS', 'Chrome']
},
during_watch: {
browsers: ['PhantomJS']
}
}
ありがとう!
Angular.jsも含める必要があります。そうすると、angular.mocksのみが機能し、それ以外の場合はwindow.angularが未定義になります。
files: [
'dom_munger.data.appjs',
'path/to/angular.js', //<-- include angularjs
'bower_components/angular-mocks/angular-mocks.js',
'tests/spec/*.js'
],
2017およびwebpack 2の更新(ただし、角度は同じ<2)
@jlewが言ったように、angular-mocksはウィンドウにangularを期待します
モジュール参照はwebpackに置き換えられています
したがって、テストでは次のようなヘッダーが必要です。
import angular from 'angular';
import 'angular-mocks/ngMock';
各グローバルmodule
参照をangular.mock.module
に置き換えます
angular-mocks.jsは、angular.jsも含まれていることを前提としています。
次のステートメントでこのエラーが発生しました:
angular.mock.module( 'ui.router' )
これは、ライブラリ宣言の誤った順序が原因でした:
karma.config.js:
...
files: ['./node_modules/angular-mocks/angular-mocks.js']
.concat(dependencies),
...
(dependencies
は私のライブラリのリストで、angular.js
が含まれていました)
私は単に'./node_modules/angular-mocks/angular-mocks.js'
を依存関係リストに移動しますが、[〜#〜] after [〜#〜]angular.js
:
このような :
...
'./node_modules/angular/angular.js',
'./node_modules/angular-mocks/angular-mocks.js'
...
さらに進むには:
angular-mocks.js
を見ると、angular.js
が必要です。
/**
* @license AngularJS v1.7.5
* (c) 2010-2018 Google, Inc. http://angularjs.org
* License: MIT
*/
(function(window, angular) {
'use strict';
/* global routeToRegExp: true */
...