使用 Jasmine 和 JS 对 localStorage 进行单元测试

问题描述 投票:0回答:0

此刻正在兜圈子,希望有人能帮忙解决一下

我正在尝试着手进行单元测试

window.localStorage
相信我快到了,我只是在测试我的最终辅助方法时似乎无法访问实际的键/值对

我有以下方法

export function testSet() {
  window.localStorage.setItem('testSet', '1234');
}

export function testDeletePrefix() {
  let deleted = false;
  Object.entries(window.localStorage).forEach(([key, value]) => {
  if (key.startsWith("test") && key !== "test") {
    window.localStorage.removeItem(key);
    console.log(`Item with key '${key}' deleted from local storage.`);
    deleted = true;
  }
});
  if (!deleted) {
    console.log(`No key starting with 'test' found in local storage.`);
  }
}

单元测试

setItemSpy = spyOn(window.localStorage, "setItem").and.callFake(
    (key, value) => {
      store[key] = value.toString();
    }
  );

testSet();
expect(setItemSpy).toHaveBeenCalledWith("testSet", "1234");
testDeletePrefix();

每当我运行这个测试时,我都会得到输出

No key starting with 'test' found in local storage.

所以

spyOn
已经确认键/值对已经设置,那么为什么我在循环
window.localStorage
时无法访问它们?真的很感激一些指示,所以我能理解这个

javascript jasmine local-storage
© www.soinside.com 2019 - 2024. All rights reserved.