2017-11-17 1 views
0

habe ich den folgenden Code:Wie Funktionen für Gleichheit testen, wenn Unit-Tests

DeviceEventEmitter.addListener(eventName,() => { return 'myHandler' }) 

ich mit dem folgenden Test genannt mich entschieden, dass DeviceEventEmitter ist:

DeviceEventEmitter.addListener = jest.fn(); 
expect(DeviceEventEmitter.addListener.mock.calls[0][1]).toEqual(() => { return 'myHandler' }); 

jedoch der Test nicht erfolgreich mit :

expect(received).toEqual(expected) 

Expected value to equal: 
    [Function anonymous] 
Received: 
    [Function anonymous] 

Es sieht aus wie es nicht versteht, dass die Funktionen identisch sind.

Wie also kann ich erkennen, wenn die Funktionen identisch sind?

Antwort

1

Dies wird immer false zurück, weil Sie eine neue Funktion als Parameter für die Funktion toEqual erstellen:

expect(DeviceEventEmitter.addListener.mock.calls[0][1]).toEqual(() => { return 'myHandler' }); 

2 Funktionen mit demselben Körper sind noch anders. Sie müssen den Verweis auf den Listener beibehalten und dann die Referenz vergleichen:

var listener =() => { return 'myHandler' } 
DeviceEventEmitter.addListener(eventName, listener) 

DeviceEventEmitter.addListener = jest.fn(); 
expect(DeviceEventEmitter.addListener.mock.calls[0][1]).toEqual(listener); 
Verwandte Themen