Angularjs将$资源注入工厂,用于使用jasmine进行测试

时间:2013-09-03 10:20:51

标签: unit-testing angularjs jasmine

我正在编写我的单元测试以测试工厂开发如下

angular.module("MyApp.Factory",[]).factory("factory",function($resource, baseUrl) {
    return {
        someService: function () {
            return $resource(baseUrl + "/someUri");
        }
    };
});

相同的茉莉花规格

describe("My App Factory Tests", function () {

        var $factory;

        beforeEach(function () {

            module("MyApp.Factory");

            inject(function (factory) {
                $factory = factory;
            });

        });

        it("Factory must be defined", function () {
            expect($factory).toBeDefined();
        });


    });

但我最终得到了jasmine html测试页面中的以下错误

Error: Unknown provider: $resourceProvider <- $resource <- eligibilityService

请建议正确的方法来测试工厂

1 个答案:

答案 0 :(得分:3)

ngResource在单独的模块中定义。请查看文档http://docs.angularjs.org/api/ngResource 换句话说,您必须包含<script src="angular-resource.js">并将ngResource依赖项添加到MyApp.Factory模块 - angular.module("MyApp.Factory", ["ngResource"])

PS。在规范中,您可以用下划线包围服务名称,以便我们可以在本地分配与服务同名的本地变量。例如:

var factory;

beforeEach(function () {

  module("MyApp.Factory");

  inject(function (_factory_) {
    factory = _factory_;
  });

});

根据angularjs编码标准$不应用于命名自定义指令。