JS Jest Mocking - ожидаемая полученная неопределенная ошибка - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть код, который использует axios для получения некоторых данных.

const axios = require('axios');

class Users {
     static async all() {
        let res = await axios.get('http://localhost:3000/users');
        return res.data;
      }
}

module.exports = Users;

Это должно быть протестировано с Jest Framework.

const axios = require('axios');
const Users = require('./users');

jest.mock('axios');

test('should fetch users', () => {

    const users = [{
        "id": 1,
        "first_name": "Robert",
        "last_name": "Schwartz",
        "email": "rob23@gmail.com"
    }, {
        "id": 2,
        "first_name": "Lucy",
        "last_name": "Ballmer",
        "email": "lucyb56@gmail.com"
    }];

    const resp = { data : users };

    // axios.get.mockResolvedValue(resp);
    axios.get.mockImplementation(() => Promise.resolve(resp));

    // console.log(resp.data);

    return Users.all().then(resp => expect(resp.data).toEqual(users));
});

Тест не пройден с

expect(received).toEqual(expected)

Expected: [{"email": "rob23@gmail.com", "first_name": "Robert", "id": 1, "last_name": "Schwartz"}, {"email": "lucyb56@gmail.com", "first_name": "Lucy", "id": 2, "last_name": "Ballmer"}]
Received: undefined

Реальные данные:

{ "users": [
    {
        "id": 1,
        "first_name": "Robert",
        "last_name": "Schwartz",
        "email": "rob23@gmail.com"
    },
    {
        "id": 2,
        "first_name": "Lucy",
        "last_name": "Ballmer",
        "email": "lucyb56@gmail.com"
    }
...
]
}

Я подумал, может быть, это проблема именованных / неименованных массивов JSON.Как это исправить?

1 Ответ

0 голосов
/ 06 февраля 2019

Похоже, это просто простая ошибка.

Вы возвращаете resp.data из Users.all(), поэтому вместо проверки resp.data в вашем expect просто проверьте resp:

return Users.all().then(resp => expect(resp).toEqual(users));  // SUCCESS
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...