Trong khi chạy grunt test
trên ứng dụng Angular (1.0.7) scaffolded Angular (1.0.7), tôi nhận được lỗi sau:
TypeError: 'undefined' is not a function (evaluating '$scope.$parent.userLoggedIn(true)')
userLoggedIn()
nằm trong bộ điều khiển chính index.js
. Các chức năng chính nó chạy tốt trong ứng dụng góc.
Lỗi này không xảy ra trên các biến số boolean hoặc chuỗi khác trong bộ điều khiển của tôi $scope.$parent
boolean hoặc chuỗi khác, vì vậy nó liên quan trực tiếp đến các chức năng gọi trong một phụ huynh.
Tôi đang nghĩ rằng mình đang sử dụng $scope.$parent
cách sai hoặc cần phải xác định bộ điều khiển index.js
của mình trong thử nghiệm, nhưng tài liệu kiểm tra Karma không thường xuyên, do đó rất khó để biết.
EDIT: Đây là bộ điều khiển:
'use strict';
angular.module('uiApp')
.controller('LookupCtrl', ['$scope', function ($scope) {
$scope.awesomeThings = [
'HTML5 Boilerplate',
'AngularJS',
'Karma'
];
$scope.$parent.userLoggedIn(true);
}]);
Dưới đây là bài kiểm tra:.
'use strict';
describe('Controller: LookupCtrl', function() {
// load the controller's module
beforeEach(module('uiApp'));
var LookupCtrl,
scope;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
LookupCtrl = $controller('LookupCtrl', {
$scope: scope
});
}));
it('should attach a list of awesomeThings to the scope', function() {
expect(scope.awesomeThings.length).toBe(3);
});
});
(Vâng, tôi biết tôi chỉ sử dụng các bài kiểm tra mặc định awesomeThings
cho bây giờ tôi mới để kiểm tra góc).
Bạn có thể vui lòng cung cấp mã của mình cho bộ điều khiển thử nghiệm không. – BKM
Nói chung, điều đó có nghĩa là bạn đang cố sử dụng tên thuộc tính để tìm một hàm, nhưng đối tượng mà bạn đang làm việc không có thuộc tính như vậy. Vì vậy, bạn đang cố gắng sử dụng 'undefined' như một hàm, và nó không phải là một hàm. – Pointy