使用 toHaveBeenNthCalledWith 时 React Jest 测试错误
2019-02-05
11493
我正在遵循 Jest 的
文档
,但是我无法解决以下错误。
expect(dummyFunction).toHaveBeenNthCalledWith 不是函数
除非我遗漏了什么,否则我很确定我已将
dummyFunction
正确设置为
jest.fn()
。我甚至在测试中使用
dummyFunction
之前就对其输出进行了控制台处理,这就是输出。
dummyFunction console.log 输出
{ [Function: mockConstructor]
_isMockFunction: true,
getMockImplementation: [Function],
mock: [Getter/Setter],
mockClear: [Function],
mockReset: [Function],
mockReturnValueOnce: [Function],
mockReturnValue: [Function],
mockImplementationOnce: [Function],
mockImplementation: [Function],
mockReturnThis: [Function],
mockRestore: [Function] }
toHaveBeenCalledNthWith Test
const dummyFunction = jest.fn();
expect(dummyFunction).toHaveBeenCalledTimes(2); // pass
expect(dummyFunction).toHaveBeenNthCalledWith(1, { foo: 'bar' }); // error
expect(dummyFunction).toHaveBeenNthCalledWith(2, { please: 'work' });
提前感谢您的帮助。
1个回答
toHaveBeenNthCalledWith
在
Jest
版本
23.0.0
中发布,因此如果您使用的是早期版本的
Jest
,您将看到该错误。
请注意,
toHaveBeenNthCalledWith
只是
使用
spy.mock.calls[nth]
的语法糖,因此如果您使用的是早期版本的
Jest
,您只需执行以下操作:
const dummyFunction = jest.fn();
dummyFunction({ foo: 'bar' });
dummyFunction({ please: 'work' });
expect(dummyFunction).toHaveBeenCalledTimes(2); // pass
expect(dummyFunction.mock.calls[0]).toEqual([{ foo: 'bar' }]); // pass
expect(dummyFunction.mock.calls[1]).toEqual([{ please: 'work' }]); // pass
Brian Adams
2019-02-06