JasmineによるJavascriptテスト駆動開発

17
Xtone ltd. 下っ端 豊田陽一

Transcript of JasmineによるJavascriptテスト駆動開発

Page 1: JasmineによるJavascriptテスト駆動開発

Xtone ltd. 下っ端 豊田陽一

Page 2: JasmineによるJavascriptテスト駆動開発

Javascriptで テスト駆動開発、 出来てますか?

Page 3: JasmineによるJavascriptテスト駆動開発

 テストツール何使おう…  イベント駆動のテストどうしよう…

Page 4: JasmineによるJavascriptテスト駆動開発

そもそも テスト駆動開発が出来る スタートラインが ないよね

Page 5: JasmineによるJavascriptテスト駆動開発

 Ruby on rails ◦ テストを動かす環境として ◦ Assetsパイプラインを前提

 Backbone.js ◦  Javascript MVCフレームワーク

 Jasmine ◦  Javascriptテストツール ◦ Rails上で動かすgemがある ◦ Rspecみたいな文法

Page 6: JasmineによるJavascriptテスト駆動開発

 ニコ○コ動画のコメントみたいなものを流すためのCanvasライブラリを作ってみた ◦ https://github.com/rswisteria/CommentView

Page 7: JasmineによるJavascriptテスト駆動開発
Page 8: JasmineによるJavascriptテスト駆動開発

 テストはブラウザ上で実行 ◦ テストページを返すWebサーバを起動 ◦ $ bundle exec rake jasmine ◦ 上記コマンド実行後、8888ポートに接続   screenコマンドとか利用して動かしっぱなしにしておくといいかと

Page 9: JasmineによるJavascriptテスト駆動開発
Page 10: JasmineによるJavascriptテスト駆動開発

 describe~itみたいな記述でBDD ◦ Rspecみたいな感じ

 実際のHTMLの描画を伴うテスト ◦  Jasmine-domプラグインを利用 ◦ 実際にブラウザ上に描画して実行する

Page 11: JasmineによるJavascriptテスト駆動開発

あとは コードを見ながら 説明します

Page 12: JasmineによるJavascriptテスト駆動開発

 setFixture関数にDOMオブジェクト渡す ◦ Sandbox関数でHTMLからDOMオブジェクトを簡単に作れる

Page 13: JasmineによるJavascriptテスト駆動開発

 waitsFor~run関数を使う  waitsFor ◦ 関数と時間を渡す ◦ 関数がtrueを返す or 時間が経過するまで待つ

  run ◦ 関数を渡す ◦ テスト用の単一の実行キューに処理を突っ込む ◦ waitsForとかがここに入れないと反映されない

Page 14: JasmineによるJavascriptテスト駆動開発

まとめ

Page 15: JasmineによるJavascriptテスト駆動開発

すぐにテストが 動く環境がないと TDDのハードルは 高い

Page 16: JasmineによるJavascriptテスト駆動開発

Backbone.jsと Jasmineと Ruby on Railsで すぐに動く環境を

Page 17: JasmineによるJavascriptテスト駆動開発

値のアサーションが 出来なくても テスト(的な何か) 書くべき