2017-08-22 7 views
1

Nachdem ich eine Menge Forschung getan habe, kann ich keinen Weg finden, Funktionen zu verspotten, die ohne Elternobjekt exportiert werden. Zum Beispiel, um Mock-Funktionen Ich versuche, exportiert die folgende Art und Weise:Jasmine Spy-Funktion exportiert ohne Elternobjekt und importiert mit ES6 in NODE

module.exports = function thing(event) {}; 

OR in ES6

export function thing(event) {}; 

Wenn diese in eine Testdatei importieren ich versuchen, wie diese importieren:

import {thing} from 'emvio-util-responses; 


//call some function that calls thing() 

spyOn(???, 'thing').and.returnValue({}); 
expect(???.thing).toHaveBeenCalled(); 

Ich habe viele Möglichkeiten versucht, dies zu erreichen, aber der Schein wird nicht genannt. Einige schlagen vor, * zu importieren und einen Alias ​​als übergeordnetes Objekt anzugeben. wie folgt:

import * as SomeObj from 'emvio-util-responses; 


//call some function that calls thing() 

spyOn(SomeObj , 'thing').and.returnValue({}); 
expect(SomeObj .thing).toHaveBeenCalled(); 

Dies funktioniert nicht.

Andere schlagen vor, das Fensterobjekt

spyOn(window, 'thing').and.returnValue({}); 

Aber ich bin in Knoten mit :(

Antwort

0

Wenn Sie es6 Module verwenden Sie stattdessen Commonjs alle Exporte benannt sind, so dass Sie verwenden können.

export default (event) => {} 

und dann importieren & Spion als

import * as SomeObj from 'emvio-util-responses' 

... 
beforeEach(() => { 
    spyOn(someObj, 'default') 
}); 
Verwandte Themen