2011年10月02日

coffeescriptを使おう!qunit編

さて、じゃあ実際にcoffeescriptを使ってqunitをどのように使うのか、見てみよう
 
 
qunitではtest()関数の第二引数で匿名関数を使って実際のテストコードを書く。この匿名関数がスマートに書けるのがcoffeescriptの魅力なんだよね。

//function()が面倒な生javascript
test("必ずOKのテスト", function() {
    ok(true);
});


#スマートでキュートなcoffeescript 
test "必ずOKのテスト", ->
    ok true

function()以外にも細かい違いがあって・・・

  • コメントは#一個
  • 関数のカッコは省略可能
  • ブロック構造がインデントで記述可能

と、評判通りrubyとpythonを合わせたような特徴。関数のカッコも{}もendも省略できるので、記述がすっごくすっきりするんだよな

グローバル変数が使えない

ただ、ちょっと罠にハマる点があって、テストに使う用にグローバル変数にモノを突っ込もうとして

var testData

って書こうとしてもvarがないので書けない。こういうのはrubyと同じように、初めて代入した場所のスコープが有効なので

testData = {} とか testData = "" とか testData = 0

とでも書いて適当に変数を有効にするとよい

でもrubyとも違うわけで


ただ、rubyだと思って気にしないで書いてるとこれまた罠にハマる。

キャラクターが死亡するとき、die()っていう引数なしのメソッドを呼ぶ規則になってるんだけど
coffeescriptは基本javascriptなので、引数なしのメソッドだけは()を省略できない。それやるとプロパティへのアクセスになっちゃう

m = new Member testData
m.die # ←まちがい!
m.die() # ←せいかい!

とりあえず俺が直近罠にはまって解決したのはこれだけ。

っていうことは解決してない罠あるのかよ!

あります。
どうもfirefoxでは普通にcoffeescript動くんだけど、chromeでは動かないっぽい
これ未解決な。
posted by LoyalTouch at 18:38| Comment(0) | TrackBack(0) | クライアントサイド | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/228485278

この記事へのトラックバック