gpt4 book ai didi

javascript - 摩卡 - TypeError : Cannot read property '$scope' of undefined

转载 作者:行者123 更新时间:2023-11-30 15:41:54 25 4
gpt4 key购买 nike

我收到错误:

TypeError: 无法读取未定义的属性“$scope”
在 $controller (bower_components/angular/angular.js:10327:28)
在 bower_components/angular-mocks/angular-mocks.js:2221:12
在上下文中。 (src/client/app/peer-review/post-visit.controller.spec.js:11:18)

在带有 mocha 和 karma 的 angularJS Controller 上运行测试时。

它试图运行的测试的初始化是:

    describe('PostVisitController', function () {
var controller;

beforeEach(function () {
bard.appModule('app.peer-review');
bard.inject('$controller', '$log');
controller = $controller('PostVisitController');
});

bard.verifyNoOutstandingHttpRequests();

it('should be created successfully', function () {
expect(controller).to.be.defined;
});
});

它正在测试的 Controller 不需要 $scope,并且在同一模块中的其他 Controller 上的测试也顺利通过。

最佳答案

这是一个误导性错误。

当 Controller 被实例化时,angular 运行以下代码(来自 angular.js)检查 Controller 是否在它具有的已定义 Controller 列表中:

    return function $controller(expression, locals, later, ident) {
var instance, match, constructor, identifier;
later = later === true;
if (ident && isString(ident)) {
identifier = ident;
}

if (isString(expression)) {
match = expression.match(CNTRL_REG);
if (!match) {
throw $controllerMinErr('ctrlfmt',
"Badly formed controller string '{0}'. " +
"Must match `__name__ as __id__` or `__name__`.", expression);
}
constructor = match[1],
identifier = identifier || match[3];
expression = controllers.hasOwnProperty(constructor) <———————— HERE
? controllers[constructor]
: getter(locals.$scope, constructor, true) ||
(globals ? getter($window, constructor, true) : undefined);

assertArgFn(expression, constructor, true);
}

如果它在数组中找不到 Controller ,它会运行一个 getter,尝试从“locals”变量(可以为 null)中读取 $scope。

如果 Controller 没有包含在您的测试索引文件中,它就不会出现在数组中。包含该文件将解决问题。

关于javascript - 摩卡 - TypeError : Cannot read property '$scope' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40678432/

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