角注射$服务结果未知提供商:$的ServiceProvider [英] Angular injecting $service results in Unknown provider: $serviceProvider

查看:247
本文介绍了角注射$服务结果未知提供商:$的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆