如何为angularJs Factory编写单元测试

时间:2015-08-19 11:02:56

标签: angularjs jasmine factory

编辑:(添加测试代码)

嗨我有这个没有任何功能定义的工厂..我不知道怎么能为它编写单元测试(我看到很多例子但是仍然找不到办法做到这一点,如果你有什么建议或帮助我会非常感激) 我的工厂:

MyApp.factory('params', ['$rootScope', function ($rootScope) {
    // supported languages
    var params = {
        layout: {
            pageAutoScrollOnLoad: 2000
            pageSidebarClosed: false, 
            pageBodySolid: false, 

        },
        layoutImgPath: Metronic.getAssetsPath() + 'app/img/',
        layoutCssPath: Metronic.getAssetsPath() + 'app/css/'
    };
    $rootScope.params = params;
    return params;
}]);

正如@MoLow提出的答案一样,我尝试做同样的事情。

describe('params', function () {
var params;

beforeEach(module('params'));
beforeEach(inject(function (_params_) {
    params = _params_;
}));

it('Should ', function () {
    expect(params).to.be.a('Object');
 });

});

。但我有这个错误:

  

TypeError:undefined不是对象

这意味着params是未定义的。我不知道为什么。我需要帮助来解决这个问题

2 个答案:

答案 0 :(得分:1)

如果您正在使用业力,请记住在加载测试时包含所有依赖项(Metronic),在karma.conf.js文件中。

答案 1 :(得分:0)

describe('params', function () {
    var params;

    beforeEach(module('params'));
    beforeEach(inject(function (_params_) {
        params = _params_;
    }));

    it('Should ', function () {
        expect(params).to.be.a('Object');
    });

});