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 指定的超时时间内未调用异步回调