gpt4 book ai didi

javascript - 如何对内部使用 localStorage 的 AngularJS 服务进行单元测试

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:13:34 25 4
gpt4 key购买 nike

如何使用 Jasmine 和 ngMock 对内部使用 $window.localStorage 的工厂进行单元测试?

这是与我所拥有的类似的东西:

myApp.factory('myData',function ($window) {
return {
message: $window.localStorage['stuff']
}
});

非常感谢!

最佳答案

以下适用于 Jasmine 2.4:

angular.module('MyModule', []).factory('myData',function ($window) {
return {
message: function(){
return $window.localStorage['stuff'] ;
}
}
});

describe("TestName", function() {
beforeEach(module('MyModule'));
var myData, store;
beforeEach(inject(function(_myData_) {
myData = _myData_;
store = {};
var localStorage = window.localStorage;
spyOn(localStorage, 'getItem').and.callFake(function (key) {
return store[key];
});
spyOn(localStorage, 'setItem').and.callFake(function (key, value) {
return store[key] = value + '';
});
spyOn(localStorage, 'clear').and.callFake(function () {
store = {};
});
}));

it("feature desc", function() {
localStorage['stuff'] = 'hello';
expect(myData.message()).toEqual('hello');
});
});

注意 _myData_ 下划线技巧 ( see docs ) 的使用。

关于javascript - 如何对内部使用 localStorage 的 AngularJS 服务进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35033694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com