gpt4 book ai didi

mysql - 使用 Node.js/Sinon 测试 MySQL INSERT 结果

转载 作者:行者123 更新时间:2023-11-29 20:16:55 25 4
gpt4 key购买 nike

我要测试的应用程序代码:

create(params) {
let result = {};
try {
result = await this.db.query('/* some query */');
} catch (e) {
throw new Error('Error creating User', e);
}
return this._getById(result.insertId);
}

我在同一个类中有 _getById 方法,它的作用与它所说的完全一样......

我当前的测试(通过 Ava 运行):

test('it should create a user', async t => {
const db = mock({
query: () => {
},
});
const userObj = {
// some params
};
const user = new Users({
db: db.object,
});
const call = {
request: userObj,
};
const result = await user.create(call);
// test?
});

如果我尝试根据 result 变量测试任何内容,即。新创建的用户,我收到错误“无法读取未定义的属性'insertId'”。我对 Sinon 的最佳选择是什么来测试这个 create 方法将返回一个新创建的“用户”?

最佳答案

我认为您有“无法读取未定义的属性'insertId'”因为以下模拟不会返回某些内容

const db = mock({
query: () => {
},
});

如果你返回类似的东西

const db = mock({
query: () => {
return {
username: "username"
}
},
});

在测试中,结果将具有该值,您应该能够使用expect来检查是否有预期的结果:

{
username: "username"
}

当模拟不返回某些内容并且调用模拟覆盖您在此处分配的值时,此特定测试中的问题就会开始

let result = {};

关于mysql - 使用 Node.js/Sinon 测试 MySQL INSERT 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39705153/

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