javascript - JS Jest Mocking - 预期收到未定义的错误

标签 javascript unit-testing mocking jestjs jest-mock-axios

我有使用 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 框架进行测试。

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 数组的问题。 如何解决?

最佳答案

看起来这只是一个简单的错误。

您正在返回resp.data来自Users.all()所以不要检查 resp.data在你的expect只需检查resp :

return Users.all().then(resp => expect(resp).toEqual(users));  // SUCCESS

关于javascript - JS Jest Mocking - 预期收到未定义的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54512880/

相关文章:

javascript - Twitter Bootstrap - 多个图像(缩略图)轮播 - 一次移动一个缩略图

python - Pydev 有选择地运行单元测试

javascript - 使用 Firebase 时应该如何测试 vue 组件?

unit-testing - 在域类上调用 .save() 失败,单元测试中没有方法 .save() 的签名

groovy - Spock 验证模拟引发的异常以及模拟交互

javascript - 单击 li 中的图标时,如何确定它是否是 ul 中的第一个 li?

javascript - Angular 2 : how to "reload" page with router (recheck canActivate)?

javascript - 创建新的 SVGNumber 或其他 SVG 元素

Python 模拟具有不同结果的多个调用

python - 如何检索对模拟的调用的所有内容?