toBeCalledWith 和 toHaveBeenCalledWith 之间的玩笑区别

Exi*_*tos 11 jestjs

这在文档中并不明显,但是...toBeCalledWith和之间有什么区别toHaveBeenCalledWith

sli*_*wp2 21

从文档https://jestjs.io/docs/en/expect#tohavebeenCalledwitharg1-arg2-

.toHaveBeenCalledWith(arg1, arg2, ...) 在别名下: .toBeCalledWith()

从源代码:

https://github.com/facebook/jest/blob/b7cb5221bb06b6fe63c1a5e725ddbc1aaa82d306/packages/expect/src/spyMatchers.ts#L1128

https://github.com/facebook/jest/blob/b7cb5221bb06b6fe63c1a5e725ddbc1aaa82d306/packages/expect/src/spyMatchers.ts#L1131

//...
  toBeCalledWith: createToBeCalledWithMatcher('toBeCalledWith'),
  toHaveBeenCalled: createToBeCalledMatcher('toHaveBeenCalled'),
  toHaveBeenCalledTimes: createToBeCalledTimesMatcher('toHaveBeenCalledTimes'),
  toHaveBeenCalledWith: createToBeCalledWithMatcher('toHaveBeenCalledWith'),
//...
Run Code Online (Sandbox Code Playgroud)

它们是由createToBeCalledWithMatcher具有不同名称的函数创建的。

所以,他们是一样的。

  • 坦率地说,我希望 `.toBeCalledWith()` 等待将来与 `.toHaveBeenCalledWith()` 签订合同来调用该函数 (3认同)