1
我試圖模擬出這種「的UserManager」提供者在我的控制器的測試和我總是最後得到這個錯誤類型錯誤只讀屬性角因緣測試:
TypeError: Attempted to assign to readonly property.
at workFn (c:{...}/bower_components/angular-mocks/angular-mocks.js:2105)
這裏是我的控制器:
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();
});
});
});
的事情是,直到我試圖建立我沒有得到這個錯誤嘲笑'用戶管理'提供商。如果我在beforeEach語句中刪除'usermanager:mockUsermanager'這一行,那麼它運行良好。
你能發現有什麼問題嗎?提前致謝!
感謝您的支持。當我向我的模擬添加承諾時,所有測試都通過了。我試圖在你的plunkr中重現錯誤,並且我設法得到了,我認爲只有錯誤信息更有意義。 http://plnkr.co/edit/k0GyXosvBw3qMHCU9Xhh?p=preview - 可能由於茉莉花版本不匹配而導致此錯誤消息? – Bjarki