【问题标题】:create mock of localstorage react创建本地存储的模拟反应
【发布时间】:2022-02-19 04:03:42
【问题描述】:

我有这个错误:

错误:未定义 | TypeError:无法读取的属性“状态” 应要求未定义(C:\Users\amils\OneDrive\Documentos\Bootcamp - Training\Project\tracking-tool-webapp\src\api\utilities\fetch.js:45:26) 在 processTicksAndRejections (internal/process/task_queues.js:95:5) 在 Object.getAll (C:\Users\amils\OneDrive\Documentos\Bootcamp - Training\Project\tracking-tool-webapp\src\api\utilities\provider.js:18:9)

这是因为我有一个执行我的承诺的令牌,这来自本地存储:

function onLoadCandidates(dispatch) {
    dispatch({ type: CandidatesActionTypes.loading, payload: true });
    const token = localStorage.getItem('token');
    apiCandidate
        .getAll(token)
        .then((response) => {
            dispatch({ type: CandidatesActionTypes.loading, payload: response.data });
        })
        .catch((err) => {
            dispatch({ type: CandidatesActionTypes.Error, payload: err.message });
            LoggerService.error(err);
        });
}

我的单元测试一直工作到这一部分,之后它给我一个未定义的错误,因为我没有本地存储令牌:

it('Should get all candidates', async () => {
            
            global.fetch = jest.fn(() => {
                Promise.resolve({
                    status: 200,
                    json: () => Promise.resolve(mockResponse),
                });
            });

            let result = await customRenderHook();
            let actions = result.current[1];

            localStorage.getItem = jest.fn().mockReturnValue('valuesss');
            await act(async () => {
                actions.onLoadCandidates();
            });

            let state = result.current[0];
            expect(state.candidates).toEqual(mockResponse);
        });

如何模拟 localStorage.getItem('token')?让这个值不要未定义

【问题讨论】:

    标签: unit-testing jestjs react-testing-library


    【解决方案1】:

    测试有自己的本地存储,因此您需要在某处设置该值,例如在 beforeAll() 测试函数中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多