В настоящее время я пытаюсь написать Jest-тесты для своего приложения React Native, проверяя мои команды извлечения следующим образом:
const token = await AsyncStorage.getItem("id");
let response = await fetch('http://192.168.0.12:3000/auth/login', {
method: 'GET',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
}
});
let res = await response.json();
...rest of code
Но я не могу найти какие-либо насмешливые решения для Asyn c Хранение одной версии ранее (ie. WITHIN React Native, а не текущая @act-native-community / asyn c -storage . В настоящее время я попытался полностью смоделировать модуль следующим образом, и проверка, вызывается ли когда-либо метод getItem ():
test('tests Login', () => {
jest.mock('react-native', () => {
AsyncStorage: {
getItem: jest.fn(() => {
return new Promise((resolve, reject)=>{
resolve("cool");
});
})
}
});
expect(AsyncStorage.getItem).toBeCalled();
});
Но в настоящее время возвращается следующая ошибка:
expect(jest.fn()).toBeCalled()
Expected number of calls: >= 1
Received number of calls: 0
И когда я изменяю его на это (чего я не делаю думаю, что это правильный путь):
expect(AsyncStorage.getItem()).toBeCalled()
возвращает Обещание, которое не разрешается:
expect(received).toBeCalled()
Received has type: object
Received has value: {"_40": 0, "_55":undefined, "_65": 1, "_72": null}
У меня вопрос, как я могу издеваться над старой версией AsyncStorage, чтобы проверить, была ли вызвана функция, или макет возвращает постоянное значение, чтобы тест мог выполнить оставшуюся часть метода . Любая помощь с этим будет принята с благодарностью. Я пробовал различные решения, предложенные на SO , но все вернули те же ошибки. Текущее программное обеспечение, которое я использую: React Native (Expo SDK 37.0.0), Jest, React-test-renderer