2010-06-28 4 views
32

Ich benutze CoffeeScript in einer Rails-Anwendung, und ich möchte Unit-Test testen. Google hat nichts gefunden, gibt es eine Möglichkeit, es zu tun, ohne mein eigenes Test-Framework zu schreiben oder das von CoffeeScript ausgegebene JavaScript zu testen?CoffeeScript Unit-Test?

Antwort

23

Sie können jedes JavaScript-Testframework mit CoffeeScript verwenden. Dadurch wird das Javascript getestet, das von CoffeeScript ausgegeben wird, da CoffeeScript selbst nicht ausgeführt werden kann.

Schreiben Sie Ihr eigenes Test-Framework für CoffeeScript ist Spaß (I did) aber völlig unpassend.

UPDATE: Jasmine Tests können run on node.js sein. In diesem Fall können sowohl die Tests als auch der getestete Code CoffeeScript sein, ohne dass ein Kompilierungsschritt erforderlich ist.

+1

Danke für die Antwort. Ich entschied mich, mit QUnit vorerst zu gehen. Ich musste ein bisschen Klebstoffcode schreiben, um meine Testseite in Gang zu bringen, aber das ist in Ordnung. –

+1

Es gibt auch eine Kaffee-Spec , die speziell für CoffeeScript ist. Ich denke, dass die meisten Leute (einschließlich mir selbst) nur JavaScript-Unit-Test-Frameworks verwenden, wie Sie es getan haben. (Ich benutze Jasmin.) – RJHunter

+0

Ich habe diese Seite gefunden, wo es heißt, Sie können Jasmin als Coffeescript schreiben und es wird http://coffeescript-cookbook.github.io/chapters/testing/testing_with_jasmine funktionieren. Wissen Sie, ob nur coffeescript (und Nodeunit) funktionieren oder ob es möglich ist, ein Testframework als Coffeescript-Code zu schreiben? –

9

Sie können QUnit wie es ist verwenden, aber nur Kaffee-Skript schreiben - und keinen Leim-Code.
Ich habe ein sehr kleines, reines Kaffee-Skript-Projekt auf Github als ein Beispiel - rubyann.

Die HTML-Testseite rubyann_tests.html verweist auf die rubyann_tests.coffee-Datei, die jquery.rubyann.coffee testet. Ich habe kein Javascript oder irgendeinen anderen Code geschrieben, um das zu funktionieren.

Die Tests laufen nur auf Chrome auf dem lokalen Computer, wenn Sie das Befehlszeilenargument --allow-file-access-from-Dateien verwenden. Aber es funktioniert auf Firefox und sogar IE ohne Probleme.

+0

Danke, ich habe über Text-/Coffeescript-Tags erfahren! –

1

ich Coffee in meiner Rails-Anwendung mit QUnit bin Tests und habe geschrieben, wie ich es hier so mache: http://effectif.com/coffeescript/qunit-boilerplate

Die interessanteste Sache in meiner Zuschreibung ist die Verwendung des Rückrufs Kaffee .load zu gewährleisten, dass Dateien Tests enthalten, nachdem die Dateien geladen werden, die den im Test befindlichen Code enthalten:

<script type="text/coffeescript"> 
    for file in ['models', 'controllers']            
    lib = "../../app/assets/javascripts/#{file}.js.coffee"       
    load_test = ->                 
     test = "#{file}_test.coffee"             
     -> CoffeeScript.load(test)              
    CoffeeScript.load lib, load_test() 
</script> 

die Notwendigkeit, die test Variable für currying wird in dem Artikel erklärt ...

0

für Kaffee-Script Einheit Testen können Sie versuchen Beast-Test es wurde von Grund auf für Kaffee-Skript geschrieben. FYI ich bin der Besitzer, aber ich denke, Sie werden es trotzdem mögen. Es ist ähnlich wie JUnit