我正在尝试这个:
expect(AP.require).toBeCalledWith('messages', () => {})
其中AP.require是一个模拟函数,应该接收一个字符串,一个函数作为第二个参数。
测试失败并显示以下消息:
Expected mock function to have been called with:
[Function anonymous] as argument 2, but it was called with [Function anonymous]
答案 0 :(得分:31)
要断言任何功能,您可以使用expect.any(constructor)
:
所以用你的例子就是这样:
expect(AP.require).toBeCalledWith('messages', expect.any(Function))
答案 1 :(得分:9)
问题是函数是一个对象,如果它们不是同一个实例,那么比较JavaScript中的对象将会失败
() => 'test' !== () => 'test'
要解决此问题,您可以使用mock.calls
检查参数
const call = AP.require.mock.calls[0] // will give you the first call to the mock
expect(call[0]).toBe('message')
expect(typeof call[1]).toBe('function')