我有以下代码:
DeviceEventEmitter.addListener(eventName, () => { return 'myHandler' })
我正在测试通过以下测试调用DeviceEventEmitter
:
DeviceEventEmitter.addListener = jest.fn();
expect(DeviceEventEmitter.addListener.mock.calls[0][1]).toEqual(() => { return 'myHandler' });
然而,测试失败了:
expect(received).toEqual(expected)
Expected value to equal:
[Function anonymous]
Received:
[Function anonymous]
看起来它并不了解功能是相同的。
那么如何在功能相同时检测呢?
答案 0 :(得分:1)
这将始终返回false,因为您正在创建一个新函数作为toEqual函数的参数:
expect(DeviceEventEmitter.addListener.mock.calls[0][1]).toEqual(() => { return 'myHandler' });
具有相同身体的2个功能仍然不同。您必须保持对侦听器的引用,然后比较引用:
var listener = () => { return 'myHandler' }
DeviceEventEmitter.addListener(eventName, listener)
DeviceEventEmitter.addListener = jest.fn();
expect(DeviceEventEmitter.addListener.mock.calls[0][1]).toEqual(listener);