Tôi gặp sự cố khi cố gắng kiểm tra bộ điều khiển của mình. Khi tôi chạy thử nghiệm của mình, tôi gặp lỗiLỗi Karma Đối số 'Bộ điều khiển' không phải là một chức năng, đã được xác định
Error: [ng:areq] Argument 'MainCtrl' is not a function, got undefined http://errors.angularjs.org/1.3.8/ng/areq?p0=MainCtrl&p1=not%20a%20function%2C%20got%20undefined
at assertArg (/Users/tetianachupryna/project/bower_components/angular/angular.js:1577)
at assertArgFn (/Users/tetianachupryna/project/bower_components/angular/angular.js:1588)
at /Users/tetianachupryna/project/bower_components/angular/angular.js:8418
at /Users/tetianachupryna/project/src/spec/controllers/main-controller.spec.js:11
at /Users/tetianachupryna/project/src/spec/controllers/main-controller.spec.js:17
at /Users/tetianachupryna/project/node_modules/karma-jasmine/lib/adapter.js:184
at http://localhost:9877/karma.js:185
at http://localhost:9877/context.html:51
Tôi biết rằng SO có đầy đủ các câu hỏi tương tự. Nhưng tôi là một tổng số null trong Angular và JS nói chung, vì vậy những câu trả lời không giúp tôi. Từ các câu hỏi tương tự trên SO tôi phát hiện ra rằng vấn đề của tôi là sai định nghĩa của bộ điều khiển nhưng tôi vẫn không thể tìm ra những gì tôi đã làm sai. Tôi đã xếp chồng và tôi cầu xin sự giúp đỡ của bạn.
Trước hết ở đây là tôi src/app/index.js tập tin mà mô-đun của tôi được định nghĩa
var app = angular.module('myModule', [
'ngAnimate',
'ngSanitize',
'ngResource',
'ui.router',
'pascalprecht.translate',
'thing1',
'thing2']);
Đây là src/app/controllers/chính-controller.js
angular.module('myModule').controller('MainCtrl', [
'$scope',
'$state',
function ($scope, $state) {
$scope.state = $state;
//***
$scope.isBigStep = function isBigStep() {
return $state.$current.step == 3;
};
}]);
Và cuối cùng là tệp này có kiểm tra src/spec/controllers/main-controller.spec.js
describe('MainCtrl', function() {
var scope, $state, createController;
beforeEach(inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
createController = function() {
return $controller('MainCtrl', {
'$scope': scope
});
};
}));
it('should make 3 as current step', function() {
var controller = createController();
expect(scope.isBigStep()).toBe(true);
});
});
Trong nghiệp cấu hình tôi có tất cả các tập tin
files: [
'bower_components/angular/angular.js',
'bower_components/angular-mocks/angular-mocks.js',
'src/app/index.js',
'src/app/controllers/*.js',
'src/spec/controllers/*.js'
],
Đối với chạy thử nghiệm của tôi, tôi sử dụng plugin nghiệp-runner trong RubyMine.
Tôi rất biết ơn sự giúp đỡ của bạn!
Bạn đang thiếu tải mô-đun. Đặt 'beforeEach (module ('myModule'));' before 'beforeEach (inject (function ($ rootScope, $ controller) {'? – PSL
Cảm ơn, mẹo này đã giúp. Bạn có thể tạo một câu trả lời độc lập mà tôi có thể chấp nhận không? –
Chắc chắn thêm một câu trả lời. – PSL