Cucumber/Rails でステップ間で変数(というか何かの値)を持ち歩く
Cucumber/Rails で、あるフィーチャ(features)内で変数を持ち歩きたい、一つのシナリオの中で、あるステップで発行された何かの値がその後のどこかのステップでどこかにまさにその値で出てくる事を確認したい。
典型的にはアクティブレコードの id、新規レコードをDBに作製・登録したとき、その後のどこかで新規登録時に発行された id が出てきてるかどうかとか。まあ、id は隠れた変数なのでその値の確認をスペックに記述するのはアプリケーションのつくりが間違ってる、レコードの属性の値で検証すべきだ、というのも筋なんだが。他のサービスとの連携とかいろいろあって idの値を検証したい。ステップ間でその値を持ち歩きたい。
今のところこんな感じ
注意事項
- 二種のステップは同じ step_definitionsファイルに置こう
- 変数が離れてくとどんどん見通し悪くなる
- インスタンス変数「@<識別子>」を書くのはステップ内(When とか Then ブロック内)から、地の文で書かない
- 識別子をシナリオの記述("@(.*?)"とか)から持ってくるとかは趣味の問題
まだ、出来る事として良い事とすべき事とか、十分尽くせていないし然程弁別も出来ていないのだけど、現在の認識としてはこんな感じ。