Jest - 是否可以在异步模块中测试特定变量?

时间:2018-01-26 19:56:58

标签: javascript node.js postgresql jest

我想知道是否可以在模块调用中测试特定值的变量。例如:

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);
   ......
}

如何在开玩笑测试中测试/访问balanceQueryuserBalanceStr的值?

我只能访问查询的userId部分,我对如何访问模块中的其他变量感到困惑。

1 个答案:

答案 0 :(得分:0)

您可以通过模拟postgres.queryBigFunction然后断言每次调用中传递的参数来实现这一点。为了能够测试异步代码,您可以实现异步test API参考:Mock Functions
模拟postgres.query时,您可以实现伪返回值,该值将分配给userBalanceStr,然后可以使用模拟的BigFunction声明。 要模拟BigFunction,您可以模拟测试模块中存在的importation,或者更改导出的函数以将BigFunction作为依赖项传递,如postgres,传递mock函数直接作为参数。