Jasmine:监视一个名为 X 次的函数,并获得第 n 次调用
Posted
技术标签:
【中文标题】Jasmine:监视一个名为 X 次的函数,并获得第 n 次调用【英文标题】:Jasmine : spy on a function called X times, and get the n-th call 【发布时间】:2018-01-11 15:12:45 【问题描述】:我似乎无法在网上找到解决方案。
这是一个代码示例,因此您会遇到问题:
// Spy on the wanted function
spyOn(object, 'myFunction');
// Call it 3 times with different parameters
object.myFunction('');
object.myFunction('', 0);
object.myFunction('', 0, true);
// Now all of these expects work
expect(object.myFunction).toHaveBeenCalledTimes(3);
expect(object.myFunction).toHaveBeenCalledWith('', 0);
expect(object.myFunction).toHaveBeenCalledWith('');
expect(object.myFunction).toHaveBeenCalledWith('', 0, true);
我想测试是否正确拨打了每个电话。有没有办法说这样的话?
expect(object.myFunction).nthCall(2).toHaveBeenCalledWith('', 0, true);
???
【问题讨论】:
【参考方案1】:有calls
属性,你可以像这样使用:
expect(object.myFunction.calls.argsFor(2)).toEqual(['', 0, true])
【讨论】:
我无权访问calls
属性,可能是call
?
@tricheriche 对不起,我犯了一个错误。现已编辑
@trichetriche 是有线的,你应该:jasmine.github.io/2.0/… 你确定object.myFunction
是间谍吗?
哦,等等,我忘了说我使用的是 Typescript,会不会是我的定义不是最新的? (该项目大约 1 个月大)
哦,等等:在我的 IDE 中,该函数仍被键入为一个类。我用(object.myFunction as jasmine.Spy)
,它给我打电话!谢谢你的帮助:)以上是关于Jasmine:监视一个名为 X 次的函数,并获得第 n 次调用的主要内容,如果未能解决你的问题,请参考以下文章