gpt4 book ai didi

node.js - async好像没有等待await

转载 作者:太空宇宙 更新时间:2023-11-03 22:04:59 24 4
gpt4 key购买 nike

我使用 Node js 和 Postgres 以及 chai 和 mocha 进行 tdd,现在当我尝试使用错误的外键更新数据库中的项目时遇到了问题。发生这种情况时,我基本上想从数据库中获取具有有效值的旧项目。

这是Item类中的更新方法

async update() {
if (this.description.length === 0) {
throw new Error("Description can not be deleted");
}
try {
const updateItem = await this.tryUpdate();
this.copyToThis(updateItem);
} catch (e) {
const oldItem = await Item.getById(this.id);
this.copyToThis(oldItem);

console.log(this);

throw new Error("Updating did not work");
}
}

这是失败的测试


it('should throw an error if you update with wrong category or project id and get the old values from the server', async function () {
const newProject = "3b4e092e-1dd9-40a5-8357-69696b3e35ba";
const newCategory = "3cf87368-9499-4af1-9af0-10ccf1e84088";
const item = await Item.getById(updateId);
expect(item).to.exist;

const oldProjectId = item.projectId;
const oldCategoryId = item.categoryId;

item.projectId = newProject;
expect(item.update()).to.be.rejectedWith(Error);

item.categoryId = newCategory;
expect(item.update()).to.be.rejectedWith(Error);

expect(item.categoryId).to.equal(oldCategoryId);
expect(item.projectId).to.equal(oldProjectId);
});

这是断言错误

 -3cf87368-9499-4af1-9af0-10ccf1e84088
+3cf87368-9499-4af1-9af0-10ccf1e84087

正如您所看到的,该项目仍然具有错误的categoryId,而不是来自服务器的categoryId。即使日志有正确的项目。

最佳答案

我自己解决了

我需要在测试中添加等待

it('should throw an error if you update with wrong category or project id and get the old values from the server', async function () {
const newProject = "3b4e092e-1dd9-40a5-8357-69696b3e35ba";
const newCategory = "3cf87368-9499-4af1-9af0-10ccf1e84088";
const item = await Item.getById(updateId);
expect(item).to.exist;

const oldProjectId = item.projectId;
const oldCategoryId = item.categoryId;

item.projectId = newProject;
await expect(item.update()).to.be.rejectedWith(Error);

item.categoryId = newCategory;
await expect(item.update()).to.be.rejectedWith(Error);

expect(item.categoryId).to.equal(oldCategoryId);
expect(item.projectId).to.equal(oldProjectId);
});

关于node.js - async好像没有等待await,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56619029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com