jasmine toHaveBeenCalledWith 部分匹配

Posted

技术标签:

【中文标题】jasmine toHaveBeenCalledWith 部分匹配【英文标题】:jasmine toHaveBeenCalledWith partial matching 【发布时间】:2014-02-01 18:35:02 【问题描述】:

有了 Jasmine,我可以窥探方法并找出论据。我希望能够拨打toHaveBeenCalledWith(something, anything)

假设我想监视一个方法.on(event, callback)。我只关心event 是否被监听,而不是实际的回调标识是什么。是否可以在不编写自定义匹配器的情况下做到这一点?我没有看到。

【问题讨论】:

开玩笑的类似问题是***.com/questions/52337116/… 【参考方案1】:

试试

toHaveBeenCalledWith(jasmine.any(Object), jasmine.any(Function))

【讨论】:

如果类型无关紧要,也可以更少关心并使用jasmine.anything()【参考方案2】:

茉莉花2:

 expect(callback).toHaveBeenCalledWith(jasmine.objectContaining(
    bar: "baz"
  ));

https://jasmine.github.io/2.0/introduction.html

【讨论】:

【参考方案3】:

如果您想测试特定的东西,您可以执行以下操作:

expect(mockSomething.someMethod.mostRecentCall.args[0].pool.maxSockets).toEqual(50);

Jasmine 2 中的语法现在是:

mockSomething.someMethod.calls.mostRecent().args[0]

【讨论】:

对额外的可选参数很有用。注意 Jasmine 2 中的语法现在是 mockSomething.someMethod.calls.mostRecent().args[0]

以上是关于jasmine toHaveBeenCalledWith 部分匹配的主要内容,如果未能解决你的问题,请参考以下文章

karma-jasmine-html-reporter@1.1.0 需要 jasmine@>=3 的对等方,但没有安装。

jasmine:在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时时间内未调用异步回调

使用 Jasmine 测试 Node 项目

将代码放在 Jasmine 测试 + Meteor 的正确目录中

没有 Jasmine-jquery 的提供者?

如何确认我使用的是啥版本的 Jasmine?