コーヒースクリプトで書かれた小さなアプリケーションの単体テストに Jasmine を使用しようとしています。coffeescript からコンパイルされた JS で単体テストを完全に実行できるという多くの情報源を見つけました。名前空間の汚染を避けるためにすべてが匿名関数にラップされている場合、JS コードのデータとロジックにどのようにアクセスしますか? 毎回 -b フラグを付けてコンパイラを実行する唯一の解決策はありますか?
3 に答える
CoffeeScript モジュールから公開するパブリック インターフェイスに対してテストする必要があります。モジュールが呼び出され、2 つのパブリック メソッドと を公開する場合、Foo次のようにそれらをエクスポートできます。barbaz
Foo =
bar: (a, b) ->
#implementation
baz: (c) ->
#implementation
(exports ? this).Foo = Foo
もちろん、このパターンには他にもバリエーションがあります。たとえば、underscore.coffeeを参照してください。パブリック インターフェイスを公開したので、適切な方法で Jasmine テストで使用できるようにします。たとえば、jasmine-node を使用している場合は、次のようにします。
Foo = require('foo') #assuming your module is compiled to foo.js
テストはFoo.barandを呼び出しますFoo.baz。
使用することが理にかなっているケースはほとんどありません-b。通常のテストはそれらの1つではありません。lawnseaは、テストするすべてのものをエクスポートする必要があるということは非常に正しいです(exportsNodeの下、またはwindowブラウザーにアタッチします)。本当に、他のプログラミング言語と同じです。
JasmineとCoffeeScriptの場合、特にjQueryと組み合わせて、InstantJasmineCoffeeプロジェクトとこの関連ブログ投稿を確認する必要があります。
たまたま見つけたのですが、Jasmine + CoffeeScript を安価に使い始めたい場合は、私が Github に投稿したこのスケルトン Sinatra アプリをチェックしてみてください。ラック フィルターを使用して、CoffeeScript を動的にコンパイルします。含まれている仕様と説明の例: https://github.com/searls/jasmine-coffee