2015-01-07 35 views
12

Tôi đang cố viết các bài kiểm tra đơn vị bằng cách sử dụng Karma + Jasmine, nhưng gặp phải lỗi với các mock góc . Khi chạy thử nghiệm grunt tôi nhận được lỗi sau:Karma + angular-mocks TypeError: 'undefined' không phải là một đối tượng (đánh giá 'angular.mock = {}')

PhantomJS 1.9.8 (Mac OS X) ERROR TypeError: 'undefined' is not an object (evaluating 'angular.mock = {}') at /Users/danielbogart/Documents/coding/work/AexNav/bower_components/angular-mocks/angular->mocks.js:17 Chrome 39.0.2171 (Mac OS X 10.9.4) ERROR Uncaught TypeError: Cannot set property 'mock' of undefined at /Users/danielbogart/Documents/coding/work/AexNav/bower_components/angular-mocks/angular->mocks.js:17

Gruntfile nghiệp config:

karma: { 
     options: { 
      frameworks: ['jasmine'], 
      files: [ 
       'dom_munger.data.appjs', 
       'tests/spec/*.js', 
       'bower_components/angular-mocks/angular-mocks.js' 
      ], 
      logLevel: 'ERROR', 
      reporters: ['mocha'], 
      autoWatch: false, //watching is handled by grunt-contrib-watch 
      singleRun: true 
     }, 
     all_tests: { 
      browsers: ['PhantomJS', 'Chrome'] 
     }, 
     during_watch: { 
      browsers: ['PhantomJS'] 
     } 
    } 

Cảm ơn!

+1

Bạn sẽ cần phải bao gồm angular.js là tốt, sau đó chỉ angular.mocks sẽ làm việc khác window.angular sẽ không được xác định. – PSL

Trả lời

20

Bạn sẽ cần phải bao gồm angular.js là tốt, sau đó chỉ angular.mocks sẽ làm việc khác window.angular sẽ được định nghĩa.

files: [ 
      'dom_munger.data.appjs', 
      'path/to/angular.js', //<-- include angularjs 
      'bower_components/angular-mocks/angular-mocks.js', 
      'tests/spec/*.js' 
     ], 
+0

Hoàn hảo, cảm ơn. –

+0

Tôi cũng tình cờ gặp điều này. Nếu bạn đang sử dụng trình duyệt, hãy đảm bảo bạn yêu cầu gói của mình trước khi yêu cầu mock góc. –

+0

Đó là một tệp tham chiếu bị thiếu trong "tệp" trong tệp cấu hình nghiệp cho tôi. –

2

góc-mocks.js giả định rằng angular.js đã được bao gồm như là tốt.

+0

Tôi đoán ý nghĩa của jlew là angular.js cần được đưa vào trước khi angular-mocks.js được bao gồm như: files: [ 'bower_components/angular/angular.js', 'bower_components/angular-mocks/angular -mocks.js ', – Stephane

3

cập nhật cho năm 2017 và webpack 2 (nhưng cùng một góc < 2)

  1. như @jlew nói, góc-mocks hy vọng góc trên cửa sổ

  2. mô-đun là tài liệu tham khảo đang được thay thế bằng webpack

Vì vậy, trong bài kiểm tra bạn cần một tiêu đề như:

import angular from 'angular'; 
import 'angular-mocks/ngMock'; 

và thay thế mỗi module tham khảo toàn cầu với angular.mock.module

+2

gần như đã làm việc ở đây trên thiết lập của tôi, đối với tôi webpack nói rằng mô-đun "góc cạnh" không xuất mặc định. Tôi đã giải quyết bằng cách sử dụng: 'nhập * làm góc từ" góc cạnh ";' 'nhập" góc-mocks/ngMock ";' – marceloemanoel

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