javascript - 如何使用 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-plugin-rewire。以下是如何实现: 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,提供快速正确的答案)))
推荐阅读
- sql - 如何在我的 SELECT 语句中使用 postgres 变量?
- ansible - playbook 中的条件语句,用于根据命令中传递的变量将文件复制到两个不同的位置
- python - 熊猫数据框选择包含特定字符串值的所有列
- python-3.x - 当我尝试注册时,yowsup 库不起作用
- mysql - 如何修复“您尝试执行不包含 X 作为聚合函数的查询”
- sql - POSTGRES - 在 ON CONFLICT 子句中以不同方式处理多个唯一索引
- macos - 为什么我得到一个存在的目录“没有这样的文件或目录”?
- android - Update in firestore not working as intended
- ios - 当玩家点击屏幕开始游戏时如何开始基于时间的得分
- javascript - 获取所有必需的输入并在页面加载时检查它们