2015-06-21 16 views
5

Tôi là một newbie trong thử nghiệm Apps góc với Jasmine, và tôi không thể tìm ra nguyên nhân của vấn đề này ...Dự kiến ​​undefined phải được xác định trong khi thử nghiệm điều khiển góc với Jasmine

Bộ điều khiển

programsModule.controller('ticketCtrl', ['$scope', function ($scope) { 
    $scope.disableSendBtn = true; 
}); 

Và đây là bài kiểm tra đơn vị

'use strict'; 

describe('app', function() { 

    // variables 
    var $rootScope, $scope, $controller; 

    beforeEach(module('supportModule')); 

    describe('ticketCtrl', function() { 
     beforeEach(inject(function (_$rootScope_, _$controller_) { 
      $rootScope = _$rootScope_; 
      $scope = $rootScope.$new(); 
      $controller = _$controller_('ticketCtrl', { 
       '$scope': $scope 
      }); 
     })); 

     it('Should disable send btn', function() { 
      expect($scope.disableSendBtn).toEqual(true); 
     }); 

    });  
}); 

Và đây là outp ut của thử nghiệm

TypeError: Cannot read property 'disableSendBtn' of undefined 

Và nếu tôi kiểm tra nếu biến $scope được định nghĩa hay không bằng cách

it('Should $scope be defined', function() { 
    expect($scope).toBeDefined(); 
}); 

tôi nhận được lỗi này quá

Expected undefined to be defined. 

Vì vậy, vấn đề là những gì ở đây?

ĐÂY là jsFiddle http://jsfiddle.net/LeoAref/bn1wxycs/


Sửa

tôi đã sử dụng mô-đun không chính xác ở đây beforeEach(module('app'));

và tôi cố định bằng cách sử dụng mô-đun đúng beforeEach(module('supportModule'));

Và tôi đã nhận lỗi khác:

Error: [ng:areq] Argument 'ticketCtrl' is not a function, got undefined 
http://errors.angularjs.org/1.4.1/ng/areq?p0=ticketCtrl&p1=not%20a%20function%2C%20got%20undefined 
+0

Hãy thử '$ khiển _ ('ticketCtrl', { $ phạm vi: $ phạm vi });' mà không sử dụng dấu nháy đơn –

+0

@WayneEllery, cảm ơn, nhưng tôi đã nhận lỗi cùng ... – LeoAref

+0

Bạn có một typo: $ rootScope = \ _ $ controller_; <- thay đổi điều đó thành \ _ $ rootScope_ –

Trả lời

0

Error: [ng:areq] Argument 'ticketCtrl' is not a function, got undefined

Lỗi này thường được ném khi cố gắng để nhanh chóng điều khiển mà không được định nghĩa trong module bạn khởi tạo trong hàm beforeEach.

Mã được cung cấp có vẻ ổn. Điều duy nhất còn thiếu là kiểm tra xem nghiệp có tìm thấy tệp của bạn không. Mở tệp karma.conf.js của bạn và đảm bảo rằng tệp nơi bộ điều khiển được xác định được liệt kê trong hoặc được chọn với regex.

+1

Bạn có thể làm điều này bằng cách đặt thuộc tính 'logLevel' của Karma thành' config.LOG_DEBUG'. – Healforgreen

Các vấn đề liên quan