我有以下代码:
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]
看起来它不明白功能是相同的。
那么如何让它检测功能是否相同?
最佳答案
这将始终返回 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);
关于javascript - 单元测试时如何测试函数的相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47351091/