以下是正在测试的功能:
export const callStoredProcedure = async (procedureName, procedureArgs)
=> {
let resultSet: any;
try {
await knexClient.transaction(async trx => {
await trx.raw(`CALL ${procedureName}(${procedureArgs});`).then(result => {
if (result[0] && result[0][0]) {
resultSet = JSON.stringify(result[0][0]);
}
});
});
} catch (err) {
console.log(err);
}
return resultSet;
};
在这里,我在一个beforeach块中模拟knexClient:
let knexClientMock;
beforeEach(() => {
// Stub Data source clients
const rawStub = sinon.stub().resolves([{ affectiveRows: 0, insertId: 0 }]);
knexClientMock = sinon.stub(knexClient, 'transaction').callsFake(
async (): Promise<any> => {
return {
raw: rawStub,
};
},
);
});
但是,当我运行测试时,if语句if(结果[0]
mock似乎工作正常,因为它使用mock
knexClient。事务
,但它保留了未覆盖的其余行。我想我只是想用mock promise result模拟raw
函数,并允许。然后运行
函数。
我怎样才能只模拟
knexClient.transaction.raw
函数,并允许其余代码具有测试覆盖?
问题是您的测试存根没有正确模拟正在使用的对象:
代码中的事务方法接受一个参数(回调函数)并调用此回调,将具有异步原始方法的事务执行器传递给它。
测试存根使“transaction”方法返回一个具有异步原始方法的对象。
在为代码编写单元测试时,首先了解代码的工作原理非常重要。否则,编写无意义的测试是非常容易的,这些测试将无法防止引入bug。
我正在尝试使用sinon存根替换一个可能需要很长时间的函数。但是当我运行测试时,测试代码似乎没有使用sinon存根。 这是我要测试的代码。 这是测试代码。 我得到一个断言错误 我做错了什么?为什么不使用存根?摩卡的测试框架。
我尝试了一个虚拟模块,并存根,但不工作。 应用程序.js test.js 我尝试了以下建议:sinon stub不替换函数 但还是一样。它不能取代功能。
我正在尝试测试一个es6类,但我不知道如何用sinon存根一个函数模块。测试不是sm下的覆盖线。callSoap函数 我试试这个: module.js index.js(这是模块的索引) my-class.js test.js 我尝试在soapModule上存根,但生成了以下错误: 无法存根不存在的自己的属性call Soap
问题内容: 我试图存根使用此对象的猫鼬依赖项: 使用这个问题的答案,我尝试这样做: 但是我得到了错误: TypeError:尝试包装未定义的属性另存为函数 我也尝试过这个: 然后我得到了错误: TypeError:应该包装对象的属性 有人能帮忙吗?我究竟做错了什么? 问题答案: 我已经分析了猫鼬的来源,并且认为这是不可能的。保存功能不是在模型上定义的,而是由钩子npm动态生成的,该钩子启用了前/后
我在获取一个sinon存根以返回/解析另一个sinon存根时遇到问题。我正在使用西农、柴、柴和摩卡。 我正在按顺序执行许多异步任务,我想测试的代码看起来像这样: 我尝试为此创建存根的尝试如下所示: “saveit”方法在Terminal.prototype,这就是为什么我需要在那里存根它。当我尝试运行它时,我收到错误消息: 在线上: 但如果我在控制台中转储终端对象,它看起来很好,就像任何其他存根对
本文向大家介绍您如何进行功能测试?,包括了您如何进行功能测试?的使用技巧和注意事项,需要的朋友参考一下 功能测试 作为功能测试的一部分,应该对业务指定的所有用户要求进行良好的测试。功能测试要求在类似于客户要求的环境中进行测试。所有边界条件,负面情景都被考虑在内。应用程序的每个功能都应该可以很好地运行,并且不会出现任何错误。 功能测试的目的 应该测试运行良好的应用程序预期的基本要求。用户界面应易于使