2

刚刚写了一个模块来获取生产盒的当前 IOStat 以确定它是否工作过度。

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

间谍是我想到的第一件事,但由于它实际上是直接调用该函数,所以这是不可能的。当然,我总是可以将这个函数定义为一个 var 并做一个 spy。

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

    if(err) throw err;

    misc();

}

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

4

1 回答 1

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
于 2013-05-28T11:24:41.383 回答