gpt4 book ai didi

AngularJS 单元测试错误 : scope is undefined

转载 作者:行者123 更新时间:2023-12-02 00:00:04 27 4
gpt4 key购买 nike

我对 AngularJS 单元测试有疑问。单元测试中的范围未定义。但首先是源代码:

主要 Angular 模块:

var app = angular.module('App', [ 
'AppCtrl',
'AppServices',
'AppDirectives',
'ngGrid',
'ui.bootstrap',
'angular-growl',
'ngAnimate'
]);

Controller 模块:

var appCtrl = angular.module('AppCtrl', []);

最后是作为简化版本进行测试的 Controller :

appCtrl.controller('SignalListCtrl', ['$scope',  
function($scope) {
$scope.name = "World";
}]);

现在是测试。版本 1:

    describe("App", function () {
beforeEach(module("App"));

describe("SignalListCtrl", function () {
var scope, controller;

beforeEach(inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
controller = $controller("SignalListCtrl", {$scope: scope});
//controller = $controller;
scope.$digest();
}));

it("should print World", function () {
//controller("SignalListCtrl", {$scope: scope});
expect(scope.name).toBe("World");
});
});
});

错误消息:scope is undefined

版本 2:

    describe("App", function () {
beforeEach(module("App"));

describe("SignalListCtrl", function () {
var scope, controller;

beforeEach(inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
//controller = $controller("SignalListCtrl", {$scope: scope});
controller = $controller;
scope.$digest();
}));

it("should print World", function () {
controller("SignalListCtrl", {$scope: scope});
expect(scope.name).toBe("World");
});
});
});

错误消息:controller is not a function

我使用业力,如果它依赖于此。

这是来自 angular-seed 的 karma.conf。这些都是我用过的库。我认为我不需要对每个库进行测试,所以我将其注释掉了。如果一切都取消注释,则会发生相同的错误。编辑:我使用的每个库现在都在 karma.conf 中。我收到相同的错误消息。

module.exports = function(config){
config.set({
basePath : '../',

files : [
'app/lib/jquery/jquery.js',
'app/lib/jquery/jquery-ui-dialog.js',
'app/lib/jquery/jquery-dialog.js',
'app/lib/angular/angular.js',
'app/lib/angular/angular-*.js',
'app/lib/angular/growl/*.js',
'app/lib/bootstrap/*.js',
'app/lib/highcharts/highcharts.js',
'app/lib/highcharts/export.js',
'app/lib/xml2json/*.js',
'app/js/*.js',
'test/lib/angular/angular-mocks.js',
'test/unit/*.js'
],

exclude : [
],

autoWatch : true,

frameworks: ['jasmine'],

browsers : ['Firefox'],

plugins : [
'karma-junit-reporter',
'karma-chrome-launcher',
'karma-firefox-launcher',
'karma-jasmine'
],

junitReporter : {
outputFile: 'test_out/unit.xml',
suite: 'unit'
}

})};

为什么范围未定义?范围获取 $rootScope.$new()。我希望有人能帮助我。

谢谢。

P.S:我在 GoogleGroups 上问过同样的问题 -> https://groups.google.com/forum/#!topic/angular/4oAEVLbEZT4

但显然没有人可以帮助我。

最佳答案

试试这个

describe("App", function () {
beforeEach(module("App"));

describe("SignalListCtrl", function () {
var scope ,ctrl;

beforeEach(inject(function ($rootScope, $controller) {

scope = $rootScope.$new();
ctrl= $controller("SignalListCtrl", {$scope: scope});

}));

it("should print World", function () {

expect(ctrl.name).toBe("World");
});
});
});

关于AngularJS 单元测试错误 : scope is undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21928231/

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