RSpecで、Cucumberのような結合試験のspecを記述する
Cucumberって、仕様設計者の意図をプログラムによる自動テストにできる魔法です。
仕様設計者っていうのは、Rubyでのプログラミングが難しいけど、お客さまのニーズを理解して、それをドキュメントにできるハイパーな人です。プログラマにとっては神様です。
(でも、それがプログラマの徹夜の源なのだったりしますよね。実現が困難で意図が不明な仕様を必死で実装する感じですよね。だから、それをなんとかしなければ徹夜は解消できないと考えてみました。)
Cucumberではプログラマ以外の人でも分かりやすい記述ができます。
でもね、どうせそのドキュメントを見るのはプログラマだけです。なので、生のCapybara APIで十分なのかもしれませんね。なので、ここではRSpecのfeature specを考察します。
from Feature spec on Relick : https://www.relishapp.com/rspec/rspec-rails/v/2-13/docs/feature-specs/feature-spec!
require "spec_helper" feature "Widget management" do scenario "User creates a new widget" do visit "/widgets/new" fill_in "Name", :with => "My Widget" click_button "Create Widget" expect(page).to have_text("Widget was successfully created.") end end
---
RSpecとCucumberの機能的な違いとして、Cucumberでは実例を1ケース定義すれば、あとは以下のようにExcel表的な複数ケースを定義できます。
| input1 | input2 | output | | 'A' | '1' | 'A1' | | 'B' | '2' | 'B2' | | 'C' | '3' | 'C3' |
これは、Cucumberのスーパーな機能です。Feature specではRSpecでのサポートはありません。お手上げです。いいな、Cucumber。
---
ということで、結論としてはCucumberを過去の遺産にできるわけもなく、これからも付き合っていくことになります。この記事のタイトルがまちがってますね、ごめんなさい。
でもね、今の私が、はっきり言えるのは、私が仕事で携わっている案件は、プログラマにとって分かりやすい、そして、メンテナンスしやすいものを作ることです。Rubyも分からないような人に対するものはWord、Excel、Power Pointで作成したすてきなドキュメントだけなのです。そのような人達に、Cucumberのドキュメントをドヤ顔で見せるのは間違っているということです。
とはいえ、
「Cucumberのドキュメントをみて、これこれ、これがほしかったんだよ。なんか単体テストの結果を渡されて、これで網羅できていますっていうSIerがいたんだけど、どう思う?」
っていう人とも仕事したいものです。そのような方と仕事ができることもいいですね。
なんて、よくわかっていない人のぼやきてきな話でした。失礼しましたwww
---
この記事はRelishのRSpecのリファレンスを参考にしております。有益な記事を提供してくださり、ありがとうございます。
--- PR広告
記事を読んでくださり、ありがとうございます。
もしよろしければ、この記事の著者が提供している無料のサービス「かくってる?」をお試しください。
- かくってる?: http://cocktailq.herokuapp.com/