jasmine toHaveBeenCalled与部分匹配

Pwn*_*nna 40 javascript unit-testing jasmine

有了Jasmine,我可以窥探方法并找出论点.我希望能够打电话toHaveBeenCalledWith(something, anything).

假设我想监视一个方法.on(event, callback).我所关心的event只是听取了而不是实际的回调标识.是否可以在不编写自定义匹配器的情况下执行此操作?我没有看到一个.

bea*_*der 71

尝试

toHaveBeenCalledWith(jasmine.any(Object), jasmine.any(Function))
Run Code Online (Sandbox Code Playgroud)

  • 如果类型无关紧要,也可以使用`jasmine.anything()` (4认同)

Iev*_*nov 34

茉莉花2:

 expect(callback).toHaveBeenCalledWith(jasmine.objectContaining({
    bar: "baz"
  }));
Run Code Online (Sandbox Code Playgroud)

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


Cma*_*mag 17

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

expect(mockSomething.someMethod.mostRecentCall.args[0].pool.maxSockets).toEqual(50);
Run Code Online (Sandbox Code Playgroud)

  • 对其他可选参数有用.注意Jasmine 2中的语法现在是`mockSomething.someMethod.calls.mostRecent().args [0]` (7认同)