如何使用Jasmine和Angular对工厂进行单元测试

时间:2014-06-04 19:03:10

标签: angularjs unit-testing jasmine karma-runner

我在互联网上搜索但是找不到我需要的东西。基本上我有一个工厂声明如下:

angular.module('puFactories').factory('RestFactory', function ($http, $q) {
return {
    getAccountInfo: getAccountInfo,
    getFriendsInfos: getFriendsInfos
}
}

'puFactories'模块没有依赖关系。我想要的是在茉莉花单元测试中创建这个工厂的实例。我尝试了以下方法:

describe('Unit: RestFactory', function() {
    var factory;
    beforeEach(module('puFactories'));
    beforeEach(inject(function(_RestFactory_){
        factory = _RestFactory_;
    }));
}

但是在运行karma时我得到以下异常:

Error: [$injector:unpr] Unknown provider: RestFactoryProvider <- RestFactory

编辑:

好的,似乎我需要澄清上面的代码。我的模块已正确声明,整个应用程序正在运行。我只是将工厂和控制器分成不同的文件。工厂也在我的应用程序中返回并反对我已经简化了代码,因为它不相关。

编辑2:

我也试过

beforeEach(inject(function($injector){
        factory = $injector.get('RestFactory');
    }));

只是返回的对象是未定义的。

1 个答案:

答案 0 :(得分:1)

好吧,经过太多时间花在解决这个项目的问题上,我决定从一个干净的开始。我在这个项目中包含了所有需要的框架。我已将它添加到github中的repo中,以便将来更容易使用,因为配置所有这些都需要很长时间。这是回购:https://github.com/fatalerrorbg/MobileAppBase