Jasmine Node测试子进程

时间:2013-05-27 22:22:01

标签: node.js asynchronous tdd jasmine

刚写了一个模块,它抓住生产箱的当前IOStat,以确定它是否过度工作。

有趣的问题 - 没有办法用Jasmine测试回调函数;好吧,至少有一个我找到的。

Spies是第一个出现在我脑海中的东西,但由于它实际上直接调用了函数,所以这是不可能的。当然,我总是可以将此函数定义为var并执行间谍。

proc.exec('iostat -c | tail -n2', function(err, out, s){

    if(err) throw err;

    misc();

}

我想要测试这个的唯一原因是因为我正在开发一台没有所有这些命令的Windows机器,所以我想拦截它并抛出预期的结果。 / p>

1 个答案:

答案 0 :(得分:1)

您必须监视proc.exec并从spy.mostRecentCall.args数组中获取回调函数,然后由您自己调用:

spyOn(proc, 'exec')
//run your code
proc.exec.mostRecentCall.args[1](true)

由于这不是很方便,您可以使用sinon,您可以使用stub.callsArgWith(index, args)创建一个自动调用回调的存根。

sinon.stub(proc, 'exec').callsArgWith(1, true);
//run your code