maeshimaの日記

メモ書きです

はじめる!Cucumber第5章

scopedメソッド

空のnamed_scopeを返せるみたいだけど、使い道がよくわからない

Model.scoped - HWPS別館

User.scoped({})

Cucumber::Ast::Table の主なメソッド

rows
先頭行を除く各行の内容を配列の配列で返す
headers
先頭行の内容を配列で返す
raw
先頭行を含む各行を両方を配列の配列で返す
hashes
先頭行をヘッダとして、{列名 => データ}というHashの配列を返す
transpose
表の向きを縦横の方向を変換した表を返す。

デバッグ

シナリオ中にデバッグというステップを定義してテストを実行すると、その時点のレスポンスをブラウザで表示できる。便利!!launchyとかいうgemをインストールしておく必要がある。

tablish

cucumber-rails が提供する、HTMLからテーブル形式のデータを配列の配列で取り出すことの出来るメソッド。第一引数で行となる要素をcss形式で指定し、第二引数で、その中の列となる要素を指定する。

Cucumber::Ast::Table#diff!

tablishで取り出した形式と比較できる

相対日付

テストデータに日付を使う場合には一般に、日付またぎによってテストの正否が変わらないように、現在時刻をスタブしたり、逆に実行時からの相対日付を使ったりという対策を取ります。

これまで、Rspecのテストであんまり考えずに実行時からの相対日付を使ってたけど正解だったみたい。

Transform

シナリオ実行前にパラメータ文字列を微修正する場合に使う。定義しておくと、ステップの文字列を自動で変換してくれる。例ではテーブルの文字列を変換するために、一度別の形のステップに直していた。