NodeJS使用Jasmine 2.4测试持续异步流

时间:2018-01-04 19:18:56

标签: node.js testing jasmine async-await

我的路线调用一个函数startJob(),它立即返回一个响应"作业开始。"它还调用函数runJob(),该函数继续作业流程(异步)。

显然,我不能只做const jobResults = await startJob(),因为该功能只会返回"工作开始。"在完成所有后续功能之前,作业的实际结果不可用。

所以我需要一种方法来检查所有函数完成后的测试结果,这意味着我需要知道所有函数何时完成。

logResults()中的最后一个函数无法监视,因为我需要它来调用(包括异步调用)。 Jasmine不允许我调用它,然后调用另一个检查结果的函数。

我的想法是在名为logResults()的{​​{1}}末尾添加一个函数并监视它。 finishJob不会做任何事情,所以我不需要通过它。 伪代码: finishJob()

但是,纯粹出于测试原因,在代码中添加函数似乎是不好的做法。

其他可能的解决方案是使用某种节点观察器,状态更改机器,或者只是执行超时(也是不好的做法?但是快速实现......)

1 个答案:

答案 0 :(得分:0)

我找到了一个我很满意的解决方案。我决定在流程的不同点开始测试。

而是调用await startJob()开始测试,我打电话给await runJob(),它启动异步过程并获得结果。

这样,我就可以知道进程何时结束(使用await关键字obvs)并在那时检查结果。