Nehmen wir an, ich habe eine Komponente, die so aussieht:
%Vor% In meinem Test könnte ich diese Komponente mit TestUtils
darstellen und dann die Methode wie folgt auslassen:
Aber gibt es eine Möglichkeit, dass ich Sinon sagen könnte, dass es die Funktion einer Komponente automatisch ausgibt, wenn eine Instanz dieser Komponente erstellt wird? Ex:
%Vor%Wenn dies nicht möglich ist, gibt es eine mögliche Lösung, die der gewünschten Funktionalität nahe kommt?
Ich habe eine Lösung für mein Problem gefunden.
Um zu verdeutlichen, ist mein Problem, dass ich Funktionen ausschließen wollte, die zu untergeordneten Komponenten gehören, die unter einer übergeordneten Komponente gerendert werden. So etwas wie das:
parent.js
%Vor%child.js
%Vor% Wenn ich TestUtils zum Rendern von Parent in einem meiner Tests verwenden würde, würde dies den Fehler auslösen, den ich vermeiden wollte. Mein Problem war also, dass ich die Funktion test
von Child ausstechen musste, bevor sie instanziiert wurde. Dann, wenn ich Parent rendere, wird Kind nicht explodieren.
Die angegebene Antwort funktionierte nicht ganz, da Parent require()
verwendet, um Childs Konstruktor zu erhalten. Ich bin mir nicht sicher, warum, aber deswegen kann ich Childs Prototyp in meinem Test nicht ausstellen und erwarte, dass der Test wie folgt abläuft:
Ich konnte eine Lösung finden, die meinen Bedürfnissen entspricht. Ich wechselte meinen Test-Rahmen von Mocha zu Jasmine, und ich begann, jasmine-react zu verwenden, was einige Vorteile brachte, einschließlich der Fähigkeit eine Funktion einer Klasse auszugeben, bevor sie instanziiert wird. Hier ist ein Beispiel für eine funktionierende Lösung:
%Vor%Ich hoffe, das hilft jemandem mit einem ähnlichen Problem. Wenn jemand irgendwelche Fragen hat, würde ich froh sein zu helfen.
Tags und Links javascript reactjs sinon