TDDにjsで入門することにしました
TDD(テスト駆動開発)について改めて調べなおして、JavaScript用のテストフレームワークを選びました。
(この記事では、フレームワークの使い方等には触れません。)
先にまとめ。
- レッド、グリーン、リファクタリングを繰り返す。(テンポよく!)
- レッドはパスしないテストを書くこと。グリーンはテストをパスする最低限のコードを書くこと。
- JS用テストフレームワークとして、Qunit, Jasmine, mocha, Vowが有名ぽい?
- まず、Qunitで始めます。
TDDの概要と良さは知っていたんですが、テストはライブラリを使わずオレオレ実装でした。恥ずかしい。
やっと、TDDに入門します。少しずつ、最低限使えるようになることを目指します。
TDDとは
※現時点での僕の理解です。間違ってるかも。
テスト駆動開発のこと。レッド、グリーン、リファクタリングをくりかえす。
まずテストを書き(レッド)、そのテストをパスできるよう、プログラムを組みます。すかさずテストをして、パスしたまら(グリーン)、リファクタリングして、コードを良くします。
テストが通ることを確認しながらリファクタリングできるので、「この書き方に直して、ちゃんと動くかな?」という不安を抱えずに済みますね!
各段階での注意点
レッド
テストとして完全なものにしなくて良い。以前は、(TDDしてる人達は、完璧なテストを書けるようなアルゴリズマーとかかな恐ろしい。)とか思ってましたが、これがわかって気持ちが晴れました。TDD自体の思想は好きなんです元から。とゆーか自然とやってたりしますよね。
これで動くかな?とか悩むようなら、ひとまずテストに通します。通しながら考えてもオーケーです。
グリーン
この段階では、マジックナンバーを使うとか処理が冗長だとか、その辺は気にせず、ただただテストをパスすることのみ考えます。いえ、そのくらいの気持ちでいいってだけです。
何のフレームワークで入門するか
最近はJSばかり書いているので、それ用のフレームワークを探しました。JSはブラウザさえあればLinux,Win,Mac,iOSでもAndroidでも動く。日曜PGにはうれしくてたまりません。でも自分の書くJSはどんどん汚くなるので、TDDでなにか変わることを期待しています。
Jasmine
日本語記事多めかも。
Rails使い向けらしいので選びませんでした。でもとても人気らしい。
mocha
今流行?高機能。
アサーション(テストの判定)を行うライブラリなどの組み合わせを自分で選べる。ということは、mochaを使うからと言って、みんなテストコードの書き方が同じになるわけじゃない。
ということで、初心者の僕は遠慮しました。