javascript - 如何测试 localStorage 是否接收我在函数中设置的项目?

标签 javascript reactjs unit-testing jestjs

当前正在尝试运行身份验证功能的单元测试。为了遵守 NDA,我编写了一个虚拟函数,它基本上执行身份验证函数的操作。

Authentication.js

export const myTestFunction = param => {
  console.log(param);
  localStorage.setItem("Test", param)
}

index.test.js

import {myTestFunction} from "../../redux/actions/ApiAuthAction";

const localStorageMock = {
    getItem: jest.fn(),
    setItem: jest.fn(),
    clear: jest.fn()
  };
  global.localStorage = localStorageMock;

test("Test to see myTestFunction sets localStorage to the param value", () => {
    let param = "Hello"
    myTestFunction(param);
    expect(localStorageMock.setItem).toBeCalledWith("Test");
});

当我运行测试时,它返回的是:

expect(jest.fn()).toBeCalledWith(expected)

    Expected mock function to have been called with:
      ["Test"]
    But it was not called.

      73 |     let param = "Hello"
      74 |     myTestFunction(param);
    > 75 |     expect(localStorageMock.setItem).toBeCalledWith("Test");
         |                                      ^

      at Object.toBeCalledWith (src/__tests__/reducers/index.test.js:75:38)

我不确定我在这里做错了什么。我正在创建一个模拟本地存储。我将该函数放入测试中,但它仍然抛出未调用的失败测试。帮忙?

编辑:此测试的重点是查看 localStorage.setItem("Test, param); 是否被调用。

最佳答案

我最终使用的解决方案是:expect(localStorage.getItem("Test")).toBeDefined();但我很高兴听到是否有人有更动态的解决方案。

关于javascript - 如何测试 localStorage 是否接收我在函数中设置的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60400371/

相关文章:

javascript - React 在渲染之前为字符串的特定部分提供样式?

javascript - <td> 的内容不可见

reactjs - Material UI - 分层有序列表

java - Grails Spock - 从服务抛出异常 UndeclaredThrowableException

javascript - 使用单个事件处理程序更改多个文本框值

javascript - 在javascript中替换双斜杠

javascript面向对象函数调用初学者问题

javascript - 在 JavaScript 函数中使用本地 C# 值

javascript - 让 WebStorm 识别 jest.setupFilesAfterEnv 中定义的方法

c# - 访问方法 'System.Web.Http.HttpConfiguration.DefaultFormatters()' 失败