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 次调用的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jasmine 监视没有对象的函数

Jasmine - 监视在同一文件中调用的函数

如何在 Jasmine 1 中监视 Falcor 数据模型构造函数

如何对 DOM 操作进行单元测试(使用 jasmine)

如何使用 Jasmine 监视值属性(而不是方法)

使用 Jasmine 监视 Backbone.js 路由调用