2016-09-13 3 views
2

Ich habe zwei Funktionen auszuspionieren:Wie auf Funktion von einem anderen Modul in einem Modul

export function foo() { 
    console.log('foo'); 
} 

export function bar() { 
    foo() 
} 

Jetzt möchte ich bar() testen, setzen Sie einen spy auf foo() und behaupten, für sie aufgerufen werden. Wie kann dies erreicht werden?

+2

Nur eine Idee ..... Was ist mit aspektorientierter Programmierung? – GibboK

+0

Wie meinst du Spion? – Xotic750

+0

@ Xotic750 eigentlich, ich habe das gemeint http://sinonjs.org/docs/#sinonspy –

Antwort

1

ÄNDERN/aktualisieren: Sorry hatte bar und foo rückwärts. Die Art, wie das Modul derzeit strukturiert ist.

Wenn der Code ausgeführt wird, wird die Balkenreferenz innerhalb der Funktionsleiste für die lokale Implementierung aufgelöst. Sie können das nicht ändern, da es sich außerhalb des Modulcodes befindet. Es gibt keinen Zugriff auf die Intervalle.

Haben Sie versucht, einen solchen Code für die Testdatei zu verwenden?

let obj = {}; 
obj.bar = function() { 
this.foo(); 
} 

obj.foo = function() { 
... 
} 

export default obj; 
+0

Danke für Ihre Antwort, aber das Problem ist, dass die importierte Funktion in meinem Test nicht in meinem Modul genannt wird. Sie sind verschiedene Instanzen, also gibt es mir kein Ergebnis. –

+0

Ich kenne den Ansatz, den Sie in Ihrer editierten Antwort vorgeschlagen haben, ich kenne auch den Ansatz, Prototypmethoden auszuspionieren, aber ich war am Wandern, wenn es einen Weg gibt, es nur mit Funktionen zu tun. –

Verwandte Themen