如何在AngularJs中模拟工厂的依赖关系?

如何在AngularJs中模拟工厂的依赖关系?,angularjs,unit-testing,visual-studio-2013,chutzpah,Angularjs,Unit Testing,Visual Studio 2013,Chutzpah,我正在尝试为我的AngularJs应用程序做一个单元测试,在VS2013中使用。 假设我有一个工厂: myAppModule.factory('MyService',function(){ var fact = {}; fact.myFunction = function(){ return "Hello"; }; }); 我为它编写了如下的单元测试: describe("TestService-Test", function () { var service;

我正在尝试为我的AngularJs应用程序做一个单元测试,在VS2013中使用。 假设我有一个工厂:

myAppModule.factory('MyService',function(){
  var fact = {};
  fact.myFunction = function(){
    return "Hello";
  };
});
我为它编写了如下的单元测试:

describe("TestService-Test", function () {
   var service;

    beforeEach(function () {

    module('myApp');

    inject(function ($injector) {
        service = $injector.get('MyService');
    });
});
这很好,但如果我只向同一个服务添加了一个或多个依赖项:

myAppModule.factory('MyService',function($scope){ ... etc the same
即使我没有使用$scope,在使用VS2013运行测试时也会抛出异常,异常显示:

结果消息:错误:[$injector:unpr]。。。等

正如我从这个错误中了解到的,它是关于无法识别我请求的服务

我需要能够在服务创建中注入一些依赖项,但是如何做到呢

如果我对控制器也这样做的话,它会像一个魔咒一样工作,因为它有一个清晰的方法来注入依赖项,同时使用服务$controller创建控制器

附言: 在测试js文件的顶部,我包含了这些引用:

/// <reference path="../js/angular.min.js" />
/// <reference path="../js/angular-mocks.js" />
/// <reference path="../js/myAppFile.js" />
/// <reference path="../js/myServiceFile.js" />

我认为这是同一个问题,交叉张贴在网站上。该决议由同一原始海报张贴:


很抱歉,这不是一个问题,因为我看到我甚至不能在中注入$scope 工厂,因为它不是提供商。我用$http和 $rootScope提供者,它确实起了作用


很抱歉,这不是问题,因为我看到我甚至不能在工厂中注入$scope,因为它不是提供者。我用$http和$rootScope提供程序尝试了它,它确实起了作用

很抱歉,这不是问题,因为我看到我甚至不能在factory中注入$scope,因为它不是提供程序。我用$http和$rootScope提供程序进行了尝试,它确实起了作用。是的,我在问题下发表了一条评论,以澄清解决方案,我也会将其作为答案发布