【发布时间】: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