Olá, resolvi expandir o que foi ensinar no curso e criar mocks para o AsyncStorage, @react-native-async-storage/async-storage, mas começou a dar erros quando faço o mock sem passar direto na função "jest.mock". Alguem sabe me dizer o pq essas coisas acontecem e qual a melhor maneira de fazer?
Vou deixar alguns exemplo abaixo para ficar mais claro:
FUNCIONA
jest.mock('@react-native-async-storage/async-storage', () => ({
setItem: jest.fn((item, value) => {
return new Promise((resolve) => {
mockItems[item] = value;
setTimeout(() => resolve(value), 100);
});
}),
getItem: jest.fn((item) => {
return new Promise((resolve) => {
setTimeout(() => resolve(mockItems[item]), 100);
});
}),
}));
NÃO FUNCIONA
...
const mockStorage = {
setItem: jest.fn((item, value) => {
return new Promise((resolve) => {
mockItems[item] = value;
setTimeout(() => resolve(value), 100);
});
}),
getItem: jest.fn((item) => {
return new Promise((resolve) => {
setTimeout(() => resolve(mockItems[item]), 100);
});
}),
};
jest.mock('@react-native-async-storage/async-storage', () => mockStorage);
// Erro que aparece no console
TypeError: Cannot read property 'getItem' of undefined
...
jest.mock('@react-native-async-storage/async-storage');
describe('Example', () => {
it('mockImplementation', async () => {
AsyncStorage.getItem.mockImplementation(() => mockStorage.getItem([]));
...
});
});
// Erro que aparece no console
[@RNC/AsyncStorage]: NativeModule: AsyncStorage is null.