如何在不模拟的情况下为angularJS工厂方法编写茉莉花单元测试

时间:2019-12-12 17:36:03

标签: angularjs unit-testing jasmine

我想对工厂方法进行单元测试而不模拟实际方法调用。我该怎么办?

下面是我的工厂,我需要测试工厂方法而不模拟它。

angular
    .module('core.app')
    .factory('storageService', storageService);

function storageService() {
    var service = {
        getItem: getItem
    };

    return service;

    function getItem(keyName) {
        var data = sessionStorage.getItem(keyName);
        return JSON.parse(data);
    }
};

以下是我的spec.ts文件。不确定,我在哪里犯错。运行测试时,出现错误“ TypeError:无法读取未定义的属性'getItem'”

导入“茉莉花”;

从*角导入*作为角;

导入“角mo”;

describe(“ reddit api service”,function(){

var storageService: any;


beforeEach(function () {
    angular.module('app.core');
});

beforeEach(inject(function (_storageService_) {
    storageService = _storageService_;
}));

it('returns ranks', inject(function () {
    var res = storageService.getItem('sdfsdf');
    expect(res).toEqual(5);
}));

});

1 个答案:

答案 0 :(得分:0)

it('should parse json stored in session storage') {
  sessionStorage.setItem('key', '{"hello": "world"}');

  expect(storageService().getItem('key').hello).toBe('world');
}