node.js - 如何用玩笑断言 sequelizejs 单元测试中的验证错误?
问题描述
我正在对用户模型进行单元测试。用户名不应为空。单元测试如下:
it('should reject no name', async () => {
name = '';
expect(await User.create(payload())).toThrow();
});
当payload
除了空名称之外的所有数据时,单元测试会抛出以下错误:
SequelizeValidationError: Validation error: Invalid validator function: unique,
Validation error: Invalid validator function: msg,
Validation error: column "cell" does not exist
但是这里的断言.toThrow
是不正确的,测试用例仍然失败。试图BeUndefined 无济于事。这种错误的正确断言是什么?
解决方案
假设User.create
返回一个Promise
拒绝并抛出错误:
await expect(User.create(payload())).rejects.toThrow(); // SUCCESS
请注意,对于PR 4884toThrow
的 Promise已修复,因此如果您使用的是旧版本(22.0.0 之前),您将需要使用以下内容:Jest
toEqual
await expect(User.create(payload())).rejects.toEqual(expect.any(Error)); // SUCCESS
推荐阅读
- sql-server - 使用 openrowset 时如何避免在 Excel 工作表末尾插入空行
- c - 通过路由器的 ARP 响应
- symfony - 从 type_options 访问实体属性
- vba - 以编程方式包括/排除 MS Access 现代图表中的列
- python - 使用带有掩码数组的 numpy.unique 会出现一些奇怪的问题
- html - bootstrap:对齐 td 内的两个 div
- azure-functions - 在 Azure Function 2x 中获取访问 HttpTrigger 的主密钥
- javascript - 如何激活 jquery 验证?
- mysql - 使用 AND 运算符和两个选择?
- powershell - 如何在 PowerShell 中软终止函数