我正在对刷新用户jwt令牌的功能进行单元测试。在该功能内,必须发出后期请求。我正在模拟axios,并且在 mock 文件夹中指定数据时可以返回正确的数据。但是,我希望能够在测试本身中指定要解析的数据,因为我想使用不同类型的返回数据进行尝试。
//__mock__/axios.js
module.exports = {
get: jest.fn(),
post: jest.fn(),
create: () => {
return {
get: () => {
return {};
},
post: () => {
return {};
}
};
}
};
//unit.test.tsx
test.only('succesfully sets and gets auth token', async () => {
const SecureStore = require('expo-secure-store');
const data = {
accessToken: 'token',
refreshTOken: 'refresh'
};
let mockSetItemAsync;
let mockGetItemAsync;
mockSetItemAsync = jest.fn();
mockGetItemAsync = jest.fn();
mockGetItemAsync = jest
.spyOn(SecureStore, 'getItemAsync')
.mockImplementation(() => Promise.resolve({ token: 'token' }));
mockSetItemAsync = jest
.spyOn(SecureStore, 'setItemAsync')
.mockImplementation(() => Promise.resolve({ success: true }));
SecureStore.setItemAsync = mockSetItemAsync;
SecureStore.getItemAsync = mockGetItemAsync;
const mockAxios = jest
.spyOn(mockedAxios, 'post')
.mockImplementationOnce(() => Promise.resolve(data));
await OAuth2.refreshAuth();
expect(mockGetItemAsync).toHaveBeenCalled();
expect(mockSetItemAsync).toHaveBeenCalled();
expect(mockAxios).toHaveBeenCalledWith({ token: 'token' });
});
但是,如果我在 mock 文件夹中这样指定数据,则不会返回任何值:
module.exports = {
get: jest.fn(),
post: jest.fn(() =>
Promise.resolve({ data: { accessJWT: 'token', refreshJWT: 'refresh' } })
),
create: () => {
return {
get: () => {
return {};
},
post: () => {
return {};
}
};
}
我得到正确的返回值。 如何覆盖测试本身的返回值?