我想知道是否可以在模块调用中测试特定值的变量。例如:
module.exports = async(request, context, postgres) => {
let userId = request.user.id;
let balanceQuery = 'SELECT balance FROM account WHERE user_id = $1';
let userBalanceStr = await postgres.query(balanceQuery,[userId]).then(result => result.rows[0].balance);
let totalCount = BigFunction(userBalanceStr);
......
}
如何在开玩笑测试中测试/访问balanceQuery
或userBalanceStr
的值?
我只能访问查询的userId
部分,我对如何访问模块中的其他变量感到困惑。
答案 0 :(得分:0)
您可以通过模拟postgres.query
和BigFunction
然后断言每次调用中传递的参数来实现这一点。为了能够测试异步代码,您可以实现异步test
API参考:Mock Functions
模拟postgres.query
时,您可以实现伪返回值,该值将分配给userBalanceStr
,然后可以使用模拟的BigFunction
声明。
要模拟BigFunction
,您可以模拟测试模块中存在的importation,或者更改导出的函数以将BigFunction
作为依赖项传递,如postgres
,传递mock函数直接作为参数。