我需要stub
const { clientId, dateString } = await parameterParser.prepareInputParameters(con, req);
以及Sinon:
const retData = {
clientId: 872,
dateString: '1970-01-01',
};
sandbox.stub(parameterParser, 'prepareInputParameters').withArgs(con, req).returns(retData);
我尝试过使用以下内容:
TypeError: Cannot destructure property 'clientId' of 'undefined' or 'null'.
但我收到错误:
const { retData } = await sqlFileReader.read('./src/database/sql/getClientIdFromLoanId.sql', [`${req.query.loan_id}`], con, req.logger);
我在测试中已成功地将以下内容存在:
const retData = {
rowsCount: 1,
rows: [{ client_id: 872 }],
};
sandbox.stub(sqlFileReader, 'read').returns({ retData });
使用:
const { clientId, dateString }
但是我无法理解如何存根Option
答案 0 :(得分:0)
您需要使用resolves
而不是returns
来存储这些存根,因为您的awaiting
返回值实际上应该Promises与{ {1}},而不是retData
本身。
在sinon中,retData
是异步方法的便利。以下两行是相似的:
resolves
您的第二个示例可能不会引发错误,但如果您在此行之后记录sinon.stub(foo, 'bar').returns(Promise.resolve('baz'));
sinon.stub(foo, 'bar').resolves('baz');
的值:
retData
你会发现它是const { retData } = await sqlFileReader.read('./src/database/sql/getClientIdFromLoanId.sql', [`${req.query.loan_id}`], con, req.logger);
。这是因为undefined
导致方法调用的结果是Promise,它没有名为await
的属性。
至于为什么你的第一个样本表现不同,我不确定。我怀疑你的样品中还有其他一些不明显的东西。你介意分享更多代码吗?