如何使用Jest测试处理外部变量数据的函数



我想测试一个函数,该函数根据用户列表中的ID返回用户!!有一个文件负责处理用户列表:

const users = [];
const getUser = (id) => users.find((user) => user.id == id);
module.exports = { users, addUser, removeUser, getUser, getUsers };

不幸的是,我没有找到如何测试此功能的解决方案。预期结果未定义,因为users数组为空。我不明白如何替换一组用户进行测试。

const { getUser } = require('../users');
describe('Socket', () => {
let socketId;
beforeEach(() => {
socketId = 'qwertyqwerty';
})
test('getUser', () => {
const user = getUser(socketId);
expect(user).toEqual({id: 'qwertyqwerty',user:{username: 'Max'}});
});
})

做出决定!!!简言之使用babel插件重新布线。以下是如何实现:users.js

import Helper from './Helper';
const users = [];
const user = {
getUser: (id) => users.find((user) => user.id == id),
}
module.exports = user;

和测试文件:

const User = require('../users');
User.__Rewire__('users', [{id:'qwertyqwerty',user:{username: 'Max'}},{id:'asdfghasdfgh',user:{username: 'Andy'}}]);
describe('Socket', () => {
let socketId;
beforeEach(() => {
socketId = 'qwertyqwerty';
})
test('getUser is user error', () => {
const user = User.getUser(socketId);
expect(user).toEqual({id: 'qwertyqwerty',user:{username: 'Max'}});
});
})

感谢Always Learning,获得快速正确的答案((

最新更新