Angular mock 无法实现我的模块依赖项
我想测试控制器 Angular 对于我的申请
, 定义如下:
控制器,
决定:
因此,我测试了几种方法来创建一个测试,例如这一点:
以下是结果:
我也有测试
/而不是第一个
在以前的代码中/, 但误差几乎相同。
至于我的文件 karma.conf.js, 我安装了这个文件列表:
注射,似乎,失败了,但我真的不明白什么是缺少的或者在我的配置中缺少。 Stacktrace 以上并没有给出很多解释......
有任何想法吗?
我用 Angular 1.2.8.
尊敬
编辑,提供代码 @Engineer:
错误几乎是相同的:
我会尝试创造 fiddle, 重现我的问题......
</anonymous></anonymous></anonymous></anonymous></anonymous>
fooApp
, 定义如下:
var fooApp = angular.module/'fooApp', [ 'ngRoute', 'ngAnimate', 'hmTouchEvents' ]/;
...
控制器,
MainCtrl
决定:
"use strict";
fooApp.controller/'MainCtrl', function /$scope, $rootScope, fooService/ {
...
}
因此,我测试了几种方法来创建一个测试,例如这一点:
'use strict';
describe/'MainController test', function // {
var scope;
var controller;
beforeEach/function // {
angular.mock.module/'ngRoute', []/;
angular.mock.module/'ngAnimate', []/;
angular.mock.module/'hmTouchEvents', []/;
angular.module/'cwfApp', [ 'ngRoute', 'ngAnimate', 'hmTouchEvents' ]/;
angular.mock.inject/function /$rootScope, $controller/ {
scope = $rootScope.$new//;
controller = $controller/'MainCtrl', {
$scope: scope
}/;
}/;
}/;
it/'should display a list', function // {
console.log/'-------------- Run Test 1 | ' + scope/;
expect/scope.currentStep/.toBe/1/;
}/;
}/;
以下是结果:
Error: [$injector:modulerr] [url=http://errors.angularjs.org/1.2.16-build.64+sha.245de33/]http://errors.angularjs.org/1. ... de33/[/url]$injector/modulerr?p0=undefined&p1=Error%3A%20%5Bng%3Aareq%5D%20http%3A%2F%2Ferrors.angularjs.org%2F1.2.16-build.64%2Bsha.245de33%2Fng%2Fareq%3Fp0%3Dfn%26p1%3Dnot%2520a%2520function%252C%2520got%2520undefined%0A%20%20%20%20at%20Error%20/%3Canonymous%3E/%0A%20%20%20%20at%20http%3A%2F%2Flocalhost%3A9876%2Fbase%2Fapp%2Fbower_components%2Fangular%2Fangular.min.js%3F5961971009303638e9ad386869316e8c83f67e56%3A6%3A471%0A%20%20%20%20at%20wb%20/http%3A%2F%2Flocalhost%3A9876%2Fbase%2Fapp%2Fbower_components%2Fangular%2Fangular.min.js%3F5961971009303638e9ad386869316e8c83f67e56%3A18%3A360/%0A%20%20%20%20at%20Qa%20/http%3A%2F%2Flocalhost%3A9876%2Fbase%2Fapp%2Fbower_components%2Fangular%2Fangular.min.js%3F5961971009303638e9ad386869316e8c83f67e56%3A18%3A447/%0A%20%20%20%20at%20nc%20/http%3A%2F%2Flocalhost%3A9876%2Fbase%2Fapp%2Fbower_components%2Fangular%2Fangular.min.js%3F5961971009303638e9ad386869316e8c83f67e56%3A31%3A191/%0A%20%20%20%20at%20Object.d%20%5Bas%20invoke%5D%20/http%3A%2F%2Flocalhost%3A9876%2Fbase%2Fapp%2Fbower_components%2Fangular%2Fangular.min.js%3F5961971009303638e9ad386869316e8c83f67e56%3A33%3A176/%0A%20%20%20%20at%20http%3A%2F%2Flocalhost%3A9876%2Fbase%2Fapp%2Fbower_components%2Fangular%2Fangular.min.js%3F5961971009303638e9ad386869316e8c83f67e56%3A32%3A254%0A%20%20%20%20at%20Array.forEach%20/native/%0A%20%20%20%20at%20r%20/http%3A%2F%2Flocalhost%3A9876%2Fbase%2Fapp%2Fbower_components%2Fangular%2Fangular.min.js%3F5961971009303638e9ad386869316e8c83f67e56%3A7%3A298/%0A%20%20%20%20at%20e%20/http%3A%2F%2Flocalhost%3A9876%2Fbase%2Fapp%2Fbower_components%2Fangular%2Fangular.min.js%3F5961971009303638e9ad386869316e8c83f67e56%3A32%3A9/
at Error /<anonymous>/
at d:/dev/foo/app/bower_components/angular/angular.min.js:6:471
at d:/dev/foo/app/bower_components/angular/angular.min.js:32:400
at Array.forEach /native/
at r /d:/dev/foo/app/bower_components/angular/angular.min.js:7:298/
at e /d:/dev/foo/app/bower_components/angular/angular.min.js:32:9/
at Object.$b [as injector] /d:/dev/foo/app/bower_components/angular/angular.min.js:35:98/
at workFn /d:/dev/foo/app/bower_components/angular-mocks/angular-mocks.js:2142:52/
at Object.window.inject.angular.mock.inject [as inject] /d:/dev/foo/app/bower_components/angular-mocks/angular-mocks.js:2133:37/
at null.<anonymous> /d:/dev/foo/test/jasmine/todo.test.js:15:22/
TypeError: Cannot read property 'currentStep' of undefined
at null.<anonymous> /d:/dev/foo/test/jasmine/todo.test.js:25:21/
Chrome 31.0.1650 /Windows 7/: Executed 1 of 1 /1 FAILED/ ERROR /0.023 secs / 0.015 secs/
我也有测试
beforeEach/angular.mock.module/'cwfApp'//;
/而不是第一个
beforeEach
在以前的代码中/, 但误差几乎相同。
至于我的文件 karma.conf.js, 我安装了这个文件列表:
files: [
'app/bower_components/angular/angular.min.js',
'app/bower_components/angular-route/angular-route.min.js',
'app/bower_components/hammerjs/hammer.min.js',
'app/bower_components/angular-hammer/angular-hammer.js',
'app/bower_components/angular-mocks/angular-mocks.js',
'app/js/foo-application.js',
'app/js/foo-controllers.js',
'app/js/foo-services.js',
'app/js/foo-router.js',
'test/jasmine/*.js'
],
注射,似乎,失败了,但我真的不明白什么是缺少的或者在我的配置中缺少。 Stacktrace 以上并没有给出很多解释......
有任何想法吗?
我用 Angular 1.2.8.
尊敬
编辑,提供代码 @Engineer:
beforeEach/angular.mock.module/'fooApp'//;
beforeEach/angular.mock.inject/function/$rootScope, $controller/ {
scope = $rootScope.$new//;
controller = $controller/'MainCtrl', {
$scope: scope
}/;
}//;
it/'should display a list', function // {
console.log/'-------------- Run Test 1 | ' + scope/;
expect/scope.currentStep/.toBe/1/;
}/;
错误几乎是相同的:
Error: [$injector:modulerr] [url=http://errors.angularjs.org/1.2.16-build.64+sha.245de33/]http://errors.angularjs.org/1. ... de33/[/url]$injector/modulerr?p0=cwfApp&p1=Error%3A%20%5B%24injector%3Amodulerr%5D%20http%3A%2F%2Ferrors.angularjs.org%2F1.2.16-build.64%2Bsha.245de33%2F%24injector%2Fmodulerr%3Fp0%3DngAnimate%26p1%3DError%253A%2520%255B%2524injector%253Anomod%255D%2520http%253A%252F%252Ferrors.angularjs.org%252F1.2.16-build.64%252Bsha.245de33%252F%2524injector%252Fnomod%253Fp0%253DngAnimate%250A%2520%2520%2520%2520at%2520Error%2520/%253Canonymous%253E/%250A%2520%2520%2520%2520at%2520http%253A%252F%252Flocalhost%253A9876%252Fbase%252Fapp%252Fbower_components%252Fangular%252Fangular.min.js%253F5961971009303638e9ad386869316e8c83f67e56%253A6%253A471%250A%2520%2520%2520%2520at%2520http%253A%252F%252Flocalhost%253A9876%252Fbase%252Fapp%252Fbower_components%252Fangular%252Fangular.min.js%253F5961971009303638e9ad386869316e8c83f67e56%253A20%253A260%250A%2520%2520%2520%2520at%2520http%253A%252F%252Flocalhost%253A9876%252Fbase%252Fapp%252Fbower_components%252Fangular%252Fangular.min.js%253F5961971009303638e9ad386869316e8c83f67e56%253A21%253A262%250A%2520%2520%2520%2520at%2520http%253A%252F%252Flocalhost%253A9876%252Fbase%252Fapp%252Fbower_components%252Fangular%252Fangular.min.js%253F5961971009303638e9ad386869316e8c83f67e56%253A32%253A69%250A%2520%2520%2520%2520at%2520Array.forEach%2520/native/%250A%2520%2520%2520%2520at%2520r%2520/http%253A%252F%252Flocalhost%253A9876%252Fbase%252Fapp%252Fbower_components%252Fangular%252Fangular.min.js%253F5961971009303638e9ad386869316e8c83f67e56%253A7%253A298/%250A%2520%2520%2520%2520at%2520e%2520/http%253A%252F%252Flocalhost%253A9876%252Fbase%252Fapp%252Fbower_components%252Fangular%252Fangular.min.js%253F5961971009303638e9ad386869316e8c83f67e56%253A32%253A9/%250A%2520%2520%2520%2520at%2520http%253A%252F%252Flocalhost%253A9876%252Fbase%252Fapp%252Fbower_components%252Fangular%252Fangular.min.js%253F5961971009303638e9ad386869316e8c83f67e56%253A32%253A86%250A%2520%2520%2520%2520at%2520Array.forEach%2520/native/%0A%20%20%20%20at%20Error%20/%3Canonymous%3E/%0A%20%20%20%20at%20http%3A%2F%2Flocalhost%3A9876%2Fbase%2Fapp%2Fbower_components%2Fangular%2Fangular.min.js%3F5961971009303638e9ad386869316e8c83f67e56%3A6%3A471%0A%20%20%20%20at%20http%3A%2F%2Flocalhost%3A9876%2Fbase%2Fapp%2Fbower_components%2Fangular%2Fangular.min.js%3F5961971009303638e9ad386869316e8c83f67e56%3A32%3A400%0A%20%20%20%20at%20Array.forEach%20/native/%0A%20%20%20%20at%20r%20/http%3A%2F%2Flocalhost%3A9876%2Fbase%2Fapp%2Fbower_components%2Fangular%2Fangular.min.js%3F5961971009303638e9ad386869316e8c83f67e56%3A7%3A298/%0A%20%20%20%20at%20e%20/http%3A%2F%2Flocalhost%3A9876%2Fbase%2Fapp%2Fbower_components%2Fangular%2Fangular.min.js%3F5961971009303638e9ad386869316e8c83f67e56%3A32%3A9/%0A%20%20%20%20at%20http%3A%2F%2Flocalhost%3A9876%2Fbase%2Fapp%2Fbower_components%2Fangular%2Fangular.min.js%3F5961971009303638e9ad386869316e8c83f67e56%3A32%3A86%0A%20%20%20%20at%20Array.forEach%20/native/%0A%20%20%20%20at%20r%20/http%3A%2F%2Flocalhost%3A9876%2Fbase%2Fapp%2Fbower_components%2Fangular%2Fangular.min.js%3F5961971009303638e9ad386869316e8c83f67e56%3A7%3A298/%0A%20%20%20%20at%20e%20/http%3A%2F%2Flocalhost%3A9876%2Fbase%2Fapp%2Fbower_components%2Fangular%2Fangular.min.js%3F5961971009303638e9ad386869316e8c83f67e56%3A32%3A9/
at Error /<anonymous>/
at d:/dev/foo/app/bower_components/angular/angular.min.js:6:471
at d:/dev/foo/app/bower_components/angular/angular.min.js:32:400
at Array.forEach /native/
at r /d:/dev/foo/app/bower_components/angular/angular.min.js:7:298/
at e /d:/dev/foo/app/bower_components/angular/angular.min.js:32:9/
at Object.$b [as injector] /d:/dev/foo/app/bower_components/angular/angular.min.js:35:98/
at workFn /d:/dev/foo/app/bower_components/angular-mocks/angular-mocks.js:2142:52/
TypeError: Cannot read property 'currentStep' of undefined
at null.<anonymous> /d:/dev/foo/test/jasmine/todo.test.js:20:21/
我会尝试创造 fiddle, 重现我的问题......
</anonymous></anonymous></anonymous></anonymous></anonymous>
没有找到相关结果
已邀请:
3 个回复
喜特乐
赞同来自:
. 实际上,我的申请定义如下:
var fooApp = angular.module/'fooApp', [ 'ngRoute', 'ngAnimate', 'hmTouchEvents' ]/;
和我的
加载以下脚本:
但是这个模块
没有装。 因此,我刚刚添加了这一行:
它有效!
涵秋
赞同来自:
您需要下载它 Angular 在测试代码中如下:
郭文康
赞同来自:
事实上,如果您以其依赖项声明某些模块/例如,
angular.module/'fooApp', [ 'ngRoute', 'ngAnimate', 'hmTouchEvents' ]/
/, 然后介绍模块时/
/ 您也无需输入依赖性模块。