gpt4 book ai didi

javascript - Angular 模块在 Karma Jasmine 测试运行中不可用

转载 作者:行者123 更新时间:2023-12-02 22:35:46 24 4
gpt4 key购买 nike

我正在使用 Angular 全栈进行开发,我的 karma.conf.js 文件是

files: [             
'app/bower_components/jquery/jquery.js',
'app/bower_components/angular/angular.js',
'app/bower_components/angular-mocks/angular-mocks.js',
'app/bower_components/angular-cookies/angular-cookies.js',
'app/bower_components/angular-resource/angular-resource.js',
'app/bower_components/angular-route/angular-route.js',
'app/bower_components/angular-sanitize/angular-sanitize.js',
'app/bower_components/angular-scenario/angular-scenario.js',
'app/scripts/controllers/*.js',
'app/scripts/directives/*.js',
'app/scripts/services/*.js',
'app/scripts/app.js',
'lib/routes.js',
'test/karma/unit/**/test.spec.js'
],

测试规范:

'use strict';

(function() {
describe('App', function() {

describe('TestController', function() {

beforeEach(function() {
this.addMatchers({
toEqualData: function(expected) {
return angular.equals(this.actual, expected);
}
});
});

// Load the controllers module
beforeEach(module('ratefastApp'));

// Initialize the controller and a mock scope
var TestController,
mockUserResource,
scope,
$httpBackend,
$routeParams,
$location;

// The injector ignores leading and trailing underscores here (i.e. _$httpBackend_).
// This allows us to inject a service but then attach it to a variable
// with the same name as the service.

beforeEach(
inject(function($controller, $rootScope, _$location_, _$routeParams_, _$httpBackend_) {
scope = $rootScope.$new();
TestController = $controller('TestController', {
$scope: scope
});
$routeParams = _$routeParams_;
$httpBackend = _$httpBackend_;
$httpBackend.when('GET', '/api/test/page/:pagenum')
.respond([{title: 'test'}]);
$location = _$location_;

}));
});
});
});

运行上述命令时,我收到 $injector:nomod Module is not available

最佳答案

需要在应用程序的其余部分之前将模块加载到您的 karma 文件中。

这是因为“当模块尚未定义时,在没有依赖项数组的情况下调用 angular.module 会导致抛出此错误”docs.angularjs.org 。因此,您必须在应用程序的其余部分之前显式加载这些文件。

在您的 Karma.config javascript 文件中:

    'app/bower_components/jquery/jquery.js',
'app/bower_components/angular/angular.js',
'app/bower_components/angular-mocks/angular-mocks.js',
'app/bower_components/angular-cookies/angular-cookies.js',
'app/bower_components/angular-resource/angular-resource.js',
'app/bower_components/angular-route/angular-route.js',
'app/bower_components/angular-sanitize/angular-sanitize.js',
'app/bower_components/angular-scenario/angular-scenario.js',

'app/scripts/app.js', // Load your module before the rest of your app.

'app/scripts/controllers/*.js',
'app/scripts/directives/*.js',
'app/scripts/services/*.js',
'lib/routes.js',
'test/karma/unit/**/test.spec.js'

关于javascript - Angular 模块在 Karma Jasmine 测试运行中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21700615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com