2013-06-26 20 views
9

Tôi có một dịch vụ trên someModule mô-đun của tôi:Cấu hình cung cấp dịch vụ kiễu góc trong thử nghiệm Jasmine

someModule.provider('someService', function() { 
    this.options = {}; 
    this.$get = function() { 
     return options; 
    }; 
}); 

Tôi viết một spec, và cho đến nay tôi có như sau:

beforeEach(mocks.module('directives', ['someModule'])); 

beforeEach(function() { 
    directives.config(function (someServiceProvider) { 
     someServiceProvider.options({ foo: 'bar' }); 
    }); 
}); 

tôi cần phải định cấu hình dịch vụ someService của tôi trước mỗi thử nghiệm trong thông số kỹ thuật của tôi. Tuy nhiên, mã sau đây tạo ra lỗi: Error: Unknown provider: someServiceProvider

Tôi đang làm gì sai? Tôi nghĩ rằng nếu tôi yêu cầu một mô-đun, thì bất kỳ nhà cung cấp nào có sẵn trên mô-đun đó sẽ được 'kế thừa'? Làm thế nào tôi có thể cấu hình options trong dịch vụ someService của tôi trong thử nghiệm này?

Trả lời

18

Khi bạn gọi hàm cấu hình, mô-đun của bạn đang ở giai đoạn chạy. Tại thời điểm đó bạn không còn có thể tiêm một nhà cung cấp. Hãy thử di chuyển hàm có someServiceProvider được chèn vào nó.

beforeEach(module('myModule', function(someProvider) { 
    someProvider.configure(1); 
})); 

it('should work now', inject(function(some) { 
    expect(some.func()).toBeAvailable(); 
}));