Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用jest断言sequelizejs单元测试中的验证错误?_Node.js_Sequelize.js_Jestjs - Fatal编程技术网

Node.js 如何使用jest断言sequelizejs单元测试中的验证错误?

Node.js 如何使用jest断言sequelizejs单元测试中的验证错误?,node.js,sequelize.js,jestjs,Node.js,Sequelize.js,Jestjs,我正在对一个用户模型进行单元测试。用户名不应为空。单元测试如下所示: it('should reject no name', async () => { name = ''; expect(await User.create(payload())).toThrow(); }); 当payload包含除空名称以外的所有数据时,单元测试抛出以下错误: SequelizeValidationError: Validation error: Invalid validator fu

我正在对一个用户模型进行单元测试。用户名不应为空。单元测试如下所示:

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
不正确,测试用例仍然失败。试图取消罚款,但无济于事。对于这种类型的错误,正确的断言是什么?

您需要这样做

await expect( User.create(payload())).to.be.rejectedWith(Error)
现在,如果user.create抛出错误,测试将通过,如果它没有抛出错误,测试将失败。

您需要这样做

await expect( User.create(payload())).to.be.rejectedWith(Error)

现在,如果user.create抛出错误,测试将通过,&如果它没有抛出错误,测试将失败。

假设
user.create
返回一个
承诺,该承诺将拒绝抛出错误:

await expect(User.create(payload())).rejects.toThrow();  // SUCCESS

请注意,
toThrow
对于承诺是固定的,因此如果您使用的是较旧版本的
Jest
(22.0.0之前),则需要使用类似于
toEqual

await expect(User.create(payload())).rejects.toEqual(expect.any(Error));  // SUCCESS

假设
User.create
返回一个
Promise
,该Promise拒绝抛出错误:

await expect(User.create(payload())).rejects.toThrow();  // SUCCESS

请注意,
toThrow
对于承诺是固定的,因此如果您使用的是较旧版本的
Jest
(22.0.0之前),则需要使用类似于
toEqual

await expect(User.create(payload())).rejects.toEqual(expect.any(Error));  // SUCCESS

你们能告诉我,这段代码中的用户是什么,我的意思是它是你们的自定义类还是它的模型?这是回报承诺吗?并向我展示expect对象的创建,这样我可以更精确地回答它。你能告诉我,这段代码中的用户是什么,我的意思是它是你的自定义类还是它的模型?这是回报承诺吗?并向我展示expect对象的创建,以便我可以更精确地回答它。