gpt4 book ai didi

javascript - Angular Karma 力测试 : TypeError readonly property

转载 作者:行者123 更新时间:2023-11-28 01:30:36 28 4
gpt4 key购买 nike

我试图在我的 Controller 测试中模拟这个“usermanager”提供程序,但最终总是收到此错误

TypeError: Attempted to assign to readonly property.
at workFn (c:{...}/bower_components/angular-mocks/angular-mocks.js:2105)

这是我的 Controller :

angular.module('sasApp')
.controller('RegisterCtrl', function ($scope, usermanager) {

// variables
$scope.captcha = {};

// Get captcha from server
usermanager.getCaptcha().then(function (captcha) {
$scope.captcha = captcha;
}, function (reason) {
console.log('Failed: ' + reason);
});
});

这是我的测试:

describe('Controller: RegisterCtrl', function () {
// load the controller's module
beforeEach(module('sasApp'));

var RegisterCtrl,
scope,
mockUsermanager;

mockUsermanager = {
getCaptcha: function () {
return {
test: 1
};
}
};

// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
RegisterCtrl = $controller('RegisterCtrl', {
$scope: scope,
usermanager: mockUsermanager
});
}));

describe('Initialization', function () {

it('should have \'captcha\' object defined', function () {
expect(scope.captcha).toBeDefined();
});
});
});

问题是,直到我尝试设置“usermanager”提供程序的模拟时,我才收到此错误。如果我删除 beforeEach 语句中的“usermanager:mockUsermanager”行,那么一切都会运行良好。

你能发现哪里出了问题吗?提前致谢!

最佳答案

这可能不是最好的答案,但我已经制作了一个 Plnkr,它不会在此处重现该问题: http://plnkr.co/GgUeKnsvxEHmD3Wcyocx?p=preview

快速说明:usermanager.getCaptcha() 必须返回一个 Promise,否则测试的下一部分在尝试调用 .then 时将会崩溃。所以我刚刚放入了一个假的。

如果您发现任何差异,请告诉我(例如,我不知道您使用的是哪个 Angular 版本)。我可以看到有关更新的信息

关于javascript - Angular Karma 力测试 : TypeError readonly property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22157144/

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