jest-fetch-mock с классами, которые выполняют запрос API - PullRequest
1 голос
/ 18 июня 2020

Все примеры jest и jest-fetch-mock, с которыми я сталкивался, используют функции, которые выполняют запрос API и возвращают полезную нагрузку непосредственно из вызова функции.

В моем случае у меня другая настройка . У меня есть класс, у которого есть свойство под названием «данные». В классе есть метод под названием «get», который извлекает данные с помощью API выборки и сохраняет их в свойстве data. Когда метод вызывается, он просто возвращает true или false в зависимости от разрешения или отклонения обещания.

Я пытаюсь понять, как в этом случае писать модульные тесты для этого. Моя функция не возвращает полученные данные; только логическое значение.

Итак, если я использую jestSpyOn для имитации метода класса, как мне установить свойство данных, а затем получить результат?

В моем коде я делаю что-то вроде это (НЕ при тестировании, а в реальном приложении):

contactStore = new ContactListStore();

// 'all' is a sample param passed
contactStore.get('all').then(res => {
   if(res){
     ...perform action
   }
}); 

Как вы можете видеть, аргумент res является только логическим, и если он истинен, то contactStore.data будет содержать информацию, полученную с сервера.

Итак, чтобы запустить на нем модульный тест, мне нужно вызвать фиктивный метод get и установить свойство фиктивных данных.

Есть идеи, как это сделать?

1 Ответ

0 голосов
/ 18 июня 2020

В вашем макетном методе вам просто нужно вернуть true.

...