Coffeescript + Unit Testing: Globale Variablen?

8

Ich versuche, Jasmine für Komponententests für eine kleine Anwendung in coffeescript zu verwenden. Ich habe viele Quellen gefunden, die besagen, dass Komponententests perfekt auf JS durchgeführt werden können, das von coffeescript kompiliert wird. Wie greifen Sie auf die Daten und die Logik des JS-Codes zu, wenn alles in eine anonyme Funktion eingebettet ist, um den Namensraum nicht zu verschmutzen? Ist die einzige Lösung, den Compiler jedes Mal mit dem Flag -b auszuführen?

    
Jeff 05.04.2011, 07:14
quelle

3 Antworten

9

Sie sollten die öffentliche Schnittstelle testen, die Sie über Ihr CoffeeScript-Modul bereitstellen. Wenn Ihr Modul Foo heißt und zwei öffentliche Methoden, bar und baz , freigibt, können Sie sie folgendermaßen exportieren:

%Vor%

Natürlich gibt es andere Variationen dieses Musters. Siehe beispielsweise underscore.coffee . Jetzt, da Sie Ihre öffentliche Schnittstelle verfügbar gemacht haben, stellen Sie sie einfach Ihren Jasmine-Tests zur Verfügung. Wenn Sie beispielsweise Jasmine-Node verwenden, würden Sie Folgendes tun:

%Vor%

Ihre Tests würden dann Foo.bar und Foo.baz aufrufen.

    
lawnsea 05.04.2011 14:49
quelle
3

Es gibt nur sehr wenige Fälle, in denen es sinnvoll ist, -b ; Der normale Test gehört nicht dazu. linnsea ist ziemlich korrekt, dass Sie alles, was Sie testen, exportieren sollten (indem Sie es an exports unter Node oder window in einem Browser anhängen). Es ist das selbe wie jede Programmiersprache, wirklich.

Für Jasmine und CoffeeScript, besonders in Verbindung mit jQuery, sollten Sie sich das InstantJasmineCoffee -Projekt und dieser Blogeintrag .

>     
Trevor Burnham 05.04.2011 17:20
quelle
3

Ich bin gerade darüber gestolpert, aber wenn Sie mit Jasmine + CoffeeScript billig anfangen wollen, können Sie sich diese Skelett-Sinatra-App ansehen, die ich in Github veröffentlicht habe. Es verwendet einen Rack-Filter, um das CoffeeScript dynamisch zu kompilieren. Beispielspezifikationen & amp; Anweisungen enthalten: Ссылка

    
Justin Searls 08.05.2011 03:41
quelle