2013-02-07 17 views
16

tôi cố gắng để kiểm tra mã bên dưới:thử nghiệm trong AngularJS: lỗi tham chiếu của hàm bơm

describe('myService test', function() { 
    describe('when I call myService.one', function() { 
     beforeEach(angular.module('TargetMarketServices')); 
     it('returns 1', inject(function (imagesRepository) { 
      expect(true).toEqual(true); 
     })); 

    }); 

}); 

Khi mã này được thực thi tôi nhận được lỗi này:

TypeError: 'undefined' is not a function (evaluating 'this.func.apply(this.spec)') 
    at http://localhost:8080/testacular.js:76 
    at http://localhost:8080/context.html:35 
ReferenceError: Can't find variable: inject 
    at /home/peter/Dropbox/AngularJS/set-component/test/sets/sets-ihm.js:6 
    at /home/peter/Dropbox/AngularJS/set-component/test/sets/sets-ihm.js:8 
    at /home/peter/Dropbox/AngularJS/set-component/test/sets/sets-ihm.js:10 

PhantomJS 1.8: đã thi 1 của 3 (1 FAILED) (bỏ qua 2) (0,072 giây/0,01 giây)

Để kiểm tra, tôi sử dụng Testacular với Jasmine và PhantomJS.

Trả lời

13

Dòng, nơi bạn có

beforeEach(angular.module('TargetMarketServices')); 

nên

beforeEach(module('TargetMarketServices')); 

Nếu bạn có một cái nhìn tại dự án angular-phonecat trong test/unit/directivesSpec.js nó sử dụng

beforeEach(module('myApp.directives')); 

Nếu tôi sửa đổi nó để sử dụng angular.module thay thế:

beforeEach(angular.module('myApp.directives')); 

sau đó tôi nhận được lỗi này khi chạy testacular thêm:

TypeError: 'undefined' is not a function (evaluating 'this.func.apply(this.spec)') 
+3

Tuy nhiên, khi tôi chỉ sử dụng mô-đun, tôi nhận được lỗi "ReferenceError: Không thể tìm thấy biến: module" – ChriX

+0

Xin lỗi, ý tôi là [góc hạt] (https://github.com/angular/angular-seed)) trước đó, không phải angular-phonecat. Bạn đang nhận được tham chiếu đó, tôi giả sử, bởi vì bạn không có [angular-mocks.js] (https://github.com/angular/angular-seed/blob/master/test/lib/angular/ angular-mocks.js) trong tệp cấu hình thử nghiệm đơn vị thử nghiệm của bạn. –

+1

Sự cố đã được giải quyết bằng cách lấy tệp angular-mocks.js. – ChriX

26

AngularJS cung cấp hai thư viện kiểm tra:

  • góc-mocks.js
  • góc-scenario.js

góc-mocks được sử dụng cho thử nghiệm Jasmine và Karma g. Nó xuất bản các phương thức global() và inject() được sử dụng trong các bài kiểm tra spec Jasmine của bạn. Điều này có nghĩa là bạn phải tải tập lệnh angular-mocks.js (sau khi bạn tải thư viện/tập lệnh angular.js)

kịch bản góc chỉ được sử dụng để kiểm tra e2e.