Попытка смоделировать модуль AsyncStorage Expo, используя Jest - PullRequest
0 голосов
/ 30 апреля 2020

В настоящее время я пытаюсь написать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...