2014-01-17 50 views
1

为什么当我在人缘转轮运行此:

describe('Service tests', function() { 


    var DataServiceMock 
    var httpBackend; 


    beforeEach(angular.mock.module('app')); 

beforeEach(angular.mock.inject(function($httpBackend, $service, DataService, $injector){ 

导致此错误

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

编辑2_8 _ __ _ __ _ __ _ __ _ __ _ __ _

我试图嘲弄DataService在为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); 
    })); 

与此错误:

Error: Injector already created, can not register a module! at workFn (/home/me/root/angular/angular-mocks.js:1985:15)

+0

因为没有$服务注入。你想要注入的$服务是什么? – idursun

+0

@idursun我有一个角度DataService,我想模拟 – FutuToad

回答

3

没有$服务。如果你想嘲笑你的服务,那么你应该使用$提供:

beforeEach(function() { 
    DataServiceMock= {} 
    DataServiceMock.doSomething = function() {} 
    module(function ($provide) { 
    $provide.value('DataService', DataServiceMock) 
    }) 
}) 
+0

thx,请参阅我的编辑 – FutuToad

+1

创建一个模拟是在那里模仿实际的实现。但是在你的编辑中,我看到你正在试图从注入器获得实际的服务。由于您在模块提供例程之前调用了注入器,因此您会收到错误消息。你应该创建你的模拟像我的答案... – idursun

+0

请看我的第二个编辑,对不起,如果它需要我花一段时间才能得到这个。 – FutuToad