角注射$服务结果未知提供商:$的ServiceProvider [英] Angular injecting $service results in Unknown provider: $serviceProvider
问题描述
为什么当我在业力亚军运行此:
描述(服务测试,函数(){
VAR DataServiceMock
VAR httpBackend;
beforeEach(angular.mock.module('应用')); beforeEach(angular.mock.inject(函数($ httpBackend,$服务的DataService,$喷油器){
导致此错误
错误:[$喷油器:unpr]未知提供商:$的ServiceProvider< - $服务
的http://errors.angularjs.org/1.2.1/$injector/unpr?p0=%24serviceProvider%20%3C-%20%24service
在/home/site/angular/angular.js:78:12
块引用>编辑2____________________
我试图嘲弄为dataHandlerService
DataService的描述('服务',函数(){
VAR DataServiceMock
VAR httpBackend; VAR testUrl =测试/; beforeEach(angular.mock.module('应用')); beforeEach(angular.mock.inject(函数(){
模块(函数($提供){
$ provide.value('的DataService',DataServiceMock)
})
})); 它('应该',注入(功能(DataService的){
期待('的DataService')not.toBe(空)。
}));和这个错误:
错误:喷油器已经创建,无法注册模块!
在workFn(/home/me/root/angular/angular-mocks.js:1985:15)
块引用>解决方案有没有$服务。如果你想嘲笑你的服务,那么你应该使用$做到这一点提供:
beforeEach(函数(){
DataServiceMock = {}
DataServiceMock.doSomething =功能(){}
模块(函数($提供){
$ provide.value('的DataService',DataServiceMock)
})
})Why when I run this in the karma runner:
describe('Service tests', function () { var DataServiceMock var httpBackend; beforeEach(angular.mock.module('app')); beforeEach(angular.mock.inject(function( $httpBackend, $service, DataService, $injector){
results in this error
Error: [$injector:unpr] Unknown provider: $serviceProvider <- $service http://errors.angularjs.org/1.2.1/$injector/unpr?p0=%24serviceProvider%20%3C-%20%24service at /home/site/angular/angular.js:78:12
Edit 2____________________
I'm trying to mock the DataService for the dataHandlerService
describe('Service', function () { var DataServiceMock var httpBackend; var testUrl = "test/"; beforeEach(angular.mock.module('app')); beforeEach(angular.mock.inject(function(){ module(function ($provide) { $provide.value('DataService', DataServiceMock) }) })); it('should have', inject(function(DataService) { expect('DataService').not.toBe(null); }));
and this error:
Error: Injector already created, can not register a module! at workFn (/home/me/root/angular/angular-mocks.js:1985:15)
解决方案There is no $service. If you want to mock your service then you should do it by using $provide:
beforeEach(function () { DataServiceMock= {} DataServiceMock.doSomething = function() {} module(function ($provide) { $provide.value('DataService', DataServiceMock) }) })
这篇关于角注射$服务结果未知提供商:$的ServiceProvider的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!