Тест Javascript вызывает API с шуткой - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь проверить вызов на github api, используя jest, чтобы проверить, возвращены ли результаты (цель этого - проверить свои навыки юнит-тестирования).Но по некоторым причинам мой код работает нормально, но все равно не проходит мой тест.Я подозреваю, что я, скорее всего, не понимаю, как написать такой тест.Ниже приведен мой код

const functions = {
    getUserRepo: async (username) => {
    const url = `https://api.github.com/users/${username}/repos`;
    console.log(url);
    let result = [];
    await axios.get(url)
        .then(function (response) {
            response.data.forEach(value => result.push(value.name));
            return result;
        })
        .catch(function (error) {
            return error;
        });
    }
}  

Этот код, приведенный выше, возвращает правильные результаты в формате array, но с ошибкой test ниже

describe('Check repos from git api', () => {
test('Should return user repos', async () => {
    await functions.getUserRepo('whitehox')
        .then((response) => {
            expect(response.data).toEqual([ '57','decafreelance','decases','eexport','exportchat','flisch', 'gitprac', 'itravelcentral', 'pollark', 'portfolio', 'startereit', 'talkative', 'team-portfolio'])
        })
    });
});

Пожалуйста, что за проблема с этим test и как мне это исправить?

1 Ответ

1 голос
/ 10 апреля 2019

Необходимо исправить две вещи.

Вам необходимо вернуть result из вашей функции.Это можно упростить до этого:

const functions = {
  getUserRepo: (username) => {
    const url = `https://api.github.com/users/${username}/repos`;
    console.log(url);
    return axios.get(url)  // <= return the result
      .then(function (response) {
        return response.data.map(value => value.name);
      })
      .catch(function (error) {
        return error;
      });
  }
}

..., что делает массив response, поэтому проверьте его напрямую:

describe('Check repos from git api', () => {
  test('Should return user repos', async () => {
    await functions.getUserRepo('whitehox')
      .then(response => {
        // response **is** the array
        expect(response).toEqual(['57', 'decafreelance', 'decases', 'eexport', 'exportchat', 'flisch', 'gitprac', 'itravelcentral', 'pollark', 'portfolio', 'startereit', 'talkative', 'team-portfolio', 'YorubaIndigenous']);  // Success!
      })
  });
});

(... и есть также новыйрепо называется 'YorubaIndigenous', я добавил его к ожидаемому значению).

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