RSpec についての議論

最近定期的に話題に上がる RSpec についての議論をまとめてみました。このまとめは誰でも編集可にしてあります。
21
7594591200220899443 @shyouhei

プログラムの見た目とかの表面的な話じゃなくて、いったいどういうことを記述してどういう目的を達成するかの話な。RSpecが達成している目的はspecなる何かで、テストではないんだよ。仕様でもない。

2015-05-28 11:07:15
KOIZUKA Akihiko @koizuka

@shyouhei specはspecificationではなかったのか

2015-05-28 11:08:25
Tetsuya Morimoto @t2y

rspec ならプログラマーじゃない人でも記述できる論が昔はあったけど、結局のところ、プログラマーじゃない人があれを書くの?ってところの結論が気になってる、で結局プログラマーが書くのなら最初からテストでいいんじゃないかとも思ってる

2015-05-28 11:08:38
7594591200220899443 @shyouhei

@koizuka specをspecificationとしても利用可能なように書くのはJavaをCとしてもコンパイルできるように書くくらい困難です。見た目が似てるだけ。

2015-05-28 11:09:27
shiro16 @_shiro16

3ヶ月に1回くらいのペースで起こるRSpec議論に何かしら呼称をつけるべきなのでは?(適当)

2015-05-28 11:10:35
MOROHASHI Kyosuke @moro

@a_matsuda まあやっぱなかなか違和感は消えませんよねえ。it { is_expected_to } とか。double は良くなったと思うんですけどねえ。あとはletとlet!の使い分け作法が嫌われるんですかねえ。

2015-05-28 11:12:51
7594591200220899443 @shyouhei

まあなんだかんだでpower-assert使えばRSpecでも結局テストっぽくなっちゃうからもうみんな心配するのをやめてpower-assertを愛せばええやんという暫定結論で生きてます。

2015-05-28 11:14:17
MURAOKA Taro @kaoriya

先にUnified Specification Languageみたいなのがないと、rspecの方向性は根付かないってことかもな。

2015-05-28 11:15:29
渋川よしき @shibu_jp

@kaoriya あれ、英語読めるかどうかも評価を左右しそうなので、テストコードのi18nが必要だったんじゃないかって思います。

2015-05-28 11:16:56
MOROHASHI Kyosuke @moro

なるほど。アレを「仕様(書)」と言いはると無理が出る、アレはテストですよ、と折に触れて言ってたつもりだけど、そもそもそれを言わなきゃいけないのがどうよってことですかね。 twitter.com/shyouhei/statu…

2015-05-28 11:18:54
7594591200220899443 @shyouhei

前も言った気がするがRSpecの一番の問題点は「テスト」でも「仕様」でもない「spec」なる謎概念を記述しないといけないところで、test-unitなら書いてるのはtestだから何も悩まないが、RSpecで何をどう書けばいいかは「悩まないといけない」。これでは習慣は根付かないよ

2015-05-28 11:02:13
MURAOKA Taro @kaoriya

@shibu_jp その理屈で言うと、ひまわりやなでしこではrspecの方向性が成功することになるのでは…

2015-05-28 11:19:53
wtnabe, yet another yak shaver @wtnabe

RSpecの問題なのかBDDの問題なのか

2015-05-28 11:22:15
7594591200220899443 @shyouhei

@moro もしあれをテストですよって言うことにするのであれば、たしかにその先に「it { is_expected.to eql(hoge) } とか(テストとして)キモい」というのはわりと共感できるところです。

2015-05-28 11:22:45
( Φ _⊞) @n0kada

@ukstudio matcherという仕組みが必要なところですでにダメ

2015-05-28 11:24:53
wtnabe, yet another yak shaver @wtnabe

minitest/specとminitest_power-assertでいいんじゃないかなと思いつつRailsだとぐいぐい中に食い込んでくれてるRSpecが便利だったりするなーって感じ。

2015-05-28 11:25:41
MOROHASHI Kyosuke @moro

@shyouhei はい。穏健的 RSpec 支持派を自認している身ですが、`is_expected_to` は擁護しづらいというか、やりたいことはわかるけどキモいですよね。

2015-05-28 11:26:17
7594591200220899443 @shyouhei

@moro はい。そしてその「やりたいこと」っていうのは多分、テストしたいわけじゃないんだよね。テストの本質となんら関係ないですもん。

2015-05-28 11:27:44
methane @methane

RSpec むしろなんで流行ったのか分からない。 Python 界隈だと BDD 流行らないで、 nosetests とか py.test が主流なの、 Python Zen のおかげだと思う。

2015-05-28 11:28:02
MOROHASHI Kyosuke @moro

@shyouhei そこはおっしゃるとおりですね。なので 2-> 3の expect syntax への移行で離れる人が出てくる気分はわかります。

2015-05-28 11:29:49
渋川よしき @shibu_jp

@kaoriya テストケース一覧を日本語で書かれたExcelで提出するような会社ならあるいは。

2015-05-28 11:30:05
MOROHASHI Kyosuke @moro

あ、テストそれ自体というかアサーションからはちょっと離れるけど「書いたテストが(脳内でも)簡潔に読み下せる」というのは良いポイントだと思ってはいます。まあそれも it { should hoge } のがいいじゃんというと私もそう思います。

2015-05-28 11:31:37
joker1007 (アルフォートおじさん) @joker1007

RSpec、もうitとか捨てて全部exampleで書いて、is_expectedとかも捨ててしまえばいいのではという気がする。

2015-05-28 11:31:48
( Φ _⊞) @n0kada

中途半端な英語で書きたいならCOBOLがあるじゃん

2015-05-28 11:33:46
渋川よしき @shibu_jp

MochaとかJasmineつかっていて、別に不満ないしな。describeのあとは名詞。itのあとは動詞か助動詞かbe動詞。英語書くつもりでテストケース名決められるのはラク。

2015-05-28 11:33:51