আমি পৃথক উত্তর হিসাবে পুম্বা ৮০ এর উত্তরে আমার মন্তব্যটি পুনরায় বলার সিদ্ধান্ত নিয়েছি যাতে এটি একটি গ্রন্থাগার হিসাবে পুনরায় ব্যবহার করা সহজ হবে।
আমি পুম্বা 80 এর কোডটি নিয়েছি, এটি কিছুটা পরিমার্জন করেছি, পরীক্ষা যুক্ত করেছি এবং এটি এনপিএম মডিউল হিসাবে এখানে প্রকাশ করেছি:
https://www.npmjs.com/package/mock-local-stores ।
এখানে একটি উত্স কোড:
https://github.com/letsrock-today/mock-local-storage/blob/master/src/mock-localstores.js
কিছু পরীক্ষা:
https://github.com/letsrock-today/mock-local-stores/blob/master/test/mock-localstores.js
মডিউল গ্লোবাল অবজেক্টে মক লোকাল স্টোরেজ এবং সেশন স্টোরেজ তৈরি করে (উইন্ডো বা গ্লোবাল, যার মধ্যে কোনটি সংজ্ঞায়িত করা হয়)।
আমার অন্যান্য প্রকল্পের পরীক্ষাগুলিতে আমি এটি মোচা সহ এটি প্রয়োজনীয়: mocha -r mock-local-storage
পরীক্ষার অধীনে সমস্ত কোডের জন্য বিশ্বব্যাপী সংজ্ঞা উপলব্ধ করতে available
মূলত, কোডটি নীচের মত দেখাচ্ছে:
(function (glob) {
function createStorage() {
let s = {},
noopCallback = () => {},
_itemInsertionCallback = noopCallback;
Object.defineProperty(s, 'setItem', {
get: () => {
return (k, v) => {
k = k + '';
_itemInsertionCallback(s.length);
s[k] = v + '';
};
}
});
Object.defineProperty(s, 'getItem', {
});
Object.defineProperty(s, 'removeItem', {
});
Object.defineProperty(s, 'clear', {
});
Object.defineProperty(s, 'length', {
get: () => {
return Object.keys(s).length;
}
});
Object.defineProperty(s, "key", {
});
Object.defineProperty(s, 'itemInsertionCallback', {
get: () => {
return _itemInsertionCallback;
},
set: v => {
if (!v || typeof v != 'function') {
v = noopCallback;
}
_itemInsertionCallback = v;
}
});
return s;
}
glob.localStorage = createStorage();
glob.sessionStorage = createStorage();
}(typeof window !== 'undefined' ? window : global));
নোট করুন যে সমস্ত পদ্ধতির মাধ্যমে যুক্ত হয়েছে Object.defineProperty
যাতে নিয়মিত আইটেম হিসাবে সেগুলি পুনরাবৃত্তি, অ্যাক্সেস বা সরিয়ে ফেলা হবে না এবং দৈর্ঘ্যে গণনা করা হবে না। এছাড়াও আমি কলব্যাকটি নিবন্ধ করার জন্য একটি উপায় যুক্ত করেছি যা বলা হয় যখন কোনও আইটেম বস্তুতে রাখা হয়। এই কলব্যাক পরীক্ষার ক্ষেত্রে কোটা ছাড়িয়ে গিয়ে কোটা অনুকরণ করতে ব্যবহৃত হতে পারে।
Profit!