2008-05-04から1日間の記事一覧

振舞いベースのテストを明確に書く方法

Jay Fields' Thoughts: Testing: One expectation per testテストメソッドにて assertionがあるときはmockを使うな。そのかわりstubを使え。 mockを加えるときは、意味のある値を返す必要はない。返り値を確かめないだろうから。 すでにmockがある場合はstub…

メタプログラミングなテストは書くな

Jay Fields' Thoughts: Testing Anti-Pattern: Metaprogrammed Testsループとdefine_methodでテストメソッドを定義したらだめだという話。 行番号が意味なくなる。 失敗したテストが見つけにくくなる。 テストが複雑になりすぎる。そのため、メンテナンス性…

ARGV

http://d.hatena.ne.jp/piyo2-moko/20080503#1209822796書いてあるようにコマンドラインに引数を指定していないからすべてがnilになる。 コマンドプロンプトから実行してみよう。そのスクリプトをargvtest.rbで保存している場合はこんな感じ。 もちろん実行…

aliasによるメソッドの再定義は危険なのでUnboundMethodかextendを使おう

Jay Fields' Thoughts: Alternatives for redefining methodsメソッドの再定義の技法はいろいろあるが、どれも欠点があるというお話。状況に応じて使い分けるべき。 aliasで再定義 メソッドを再定義するときにこんな感じでaliasで元のメソッドをコピーするの…

オブジェクトの特異メソッドを定義するよりもモジュールをextendしよう

Jay Fields' Thoughts: Extend modules instead of defining methods on a metaclass特異メソッドを直接定義するのではなくて、可能な限りモジュールをextendしよう。そうしたほうが柔軟性が高まるというお話。 当たり前の話なんだが、言われてみるまで気が…