RSpec についての議論
プログラムの見た目とかの表面的な話じゃなくて、いったいどういうことを記述してどういう目的を達成するかの話な。RSpecが達成している目的はspecなる何かで、テストではないんだよ。仕様でもない。
2015-05-28 11:07:15rspec ならプログラマーじゃない人でも記述できる論が昔はあったけど、結局のところ、プログラマーじゃない人があれを書くの?ってところの結論が気になってる、で結局プログラマーが書くのなら最初からテストでいいんじゃないかとも思ってる
2015-05-28 11:08:38@koizuka specをspecificationとしても利用可能なように書くのはJavaをCとしてもコンパイルできるように書くくらい困難です。見た目が似てるだけ。
2015-05-28 11:09:27@a_matsuda まあやっぱなかなか違和感は消えませんよねえ。it { is_expected_to } とか。double は良くなったと思うんですけどねえ。あとはletとlet!の使い分け作法が嫌われるんですかねえ。
2015-05-28 11:12:51まあなんだかんだでpower-assert使えばRSpecでも結局テストっぽくなっちゃうからもうみんな心配するのをやめてpower-assertを愛せばええやんという暫定結論で生きてます。
2015-05-28 11:14:17先にUnified Specification Languageみたいなのがないと、rspecの方向性は根付かないってことかもな。
2015-05-28 11:15:29@kaoriya あれ、英語読めるかどうかも評価を左右しそうなので、テストコードのi18nが必要だったんじゃないかって思います。
2015-05-28 11:16:56なるほど。アレを「仕様(書)」と言いはると無理が出る、アレはテストですよ、と折に触れて言ってたつもりだけど、そもそもそれを言わなきゃいけないのがどうよってことですかね。 twitter.com/shyouhei/statu…
2015-05-28 11:18:54前も言った気がするがRSpecの一番の問題点は「テスト」でも「仕様」でもない「spec」なる謎概念を記述しないといけないところで、test-unitなら書いてるのはtestだから何も悩まないが、RSpecで何をどう書けばいいかは「悩まないといけない」。これでは習慣は根付かないよ
2015-05-28 11:02:13@moro もしあれをテストですよって言うことにするのであれば、たしかにその先に「it { is_expected.to eql(hoge) } とか(テストとして)キモい」というのはわりと共感できるところです。
2015-05-28 11:22:45minitest/specとminitest_power-assertでいいんじゃないかなと思いつつRailsだとぐいぐい中に食い込んでくれてるRSpecが便利だったりするなーって感じ。
2015-05-28 11:25:41@shyouhei はい。穏健的 RSpec 支持派を自認している身ですが、`is_expected_to` は擁護しづらいというか、やりたいことはわかるけどキモいですよね。
2015-05-28 11:26:17@moro はい。そしてその「やりたいこと」っていうのは多分、テストしたいわけじゃないんだよね。テストの本質となんら関係ないですもん。
2015-05-28 11:27:44RSpec むしろなんで流行ったのか分からない。 Python 界隈だと BDD 流行らないで、 nosetests とか py.test が主流なの、 Python Zen のおかげだと思う。
2015-05-28 11:28:02@shyouhei そこはおっしゃるとおりですね。なので 2-> 3の expect syntax への移行で離れる人が出てくる気分はわかります。
2015-05-28 11:29:49あ、テストそれ自体というかアサーションからはちょっと離れるけど「書いたテストが(脳内でも)簡潔に読み下せる」というのは良いポイントだと思ってはいます。まあそれも it { should hoge } のがいいじゃんというと私もそう思います。
2015-05-28 11:31:37RSpec、もうitとか捨てて全部exampleで書いて、is_expectedとかも捨ててしまえばいいのではという気がする。
2015-05-28 11:31:48MochaとかJasmineつかっていて、別に不満ないしな。describeのあとは名詞。itのあとは動詞か助動詞かbe動詞。英語書くつもりでテストケース名決められるのはラク。
2015-05-28 11:33:51