Javascript JS Jest模拟-预期收到未定义错误
我有一个使用Javascript JS Jest模拟-预期收到未定义错误,javascript,unit-testing,mocking,jestjs,jest-mock-axios,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 = re
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数组的问题。
如何修复它?看起来这只是一个简单的错误 您正在从
Users.all()
返回resp.data
,因此不必在expect
中检查resp.data
,只需检查resp
:
return Users.all().then(resp => expect(resp).toEqual(users)); // SUCCESS
未实现mockImplementation()函数