約一年前の事ですが、cucumber-rails で tableish が削除されています。
History.md
## [v1.2.0](https://github.com/cucumber/cucumber-rails/compare/v1.1.1…v1.2.0)
### Removed features
* The (deprecated) tableish method has been removed. See https://gist.github.com/1299371 for an alternative. (Aslak Hellesøy)
table要素をarrayに変換してくれる便利なメソッドがなぜ削除されたのか…
コミッタの方曰く、Capybaraに強力なAPIがあるんだからいらないでしょ。って方針らしい。
なので v1.2.0 以降では以下のようにするのがよさそう。
https://gist.github.com/4563036
https://gist.github.com/1299371
http://dennisreimann.de/blog/capybara-finder-for-cucumber-rails-deprecated-tableish/
cucumber で javascriptテストなどをする場合はシナリオごとに @javascript タグを付ける。
テストを実行するとなんらかのWebDriver (デフォルトはselenium) がブラウザを起動して
テストを実行するわけだが、alert や confirm が邪魔になる場合がある。
これらの確認をする必要がない場合は単純に alert や confirm を上書きして
なんの挙動もしないようにしてしまえば良い。
さらに web_steps_ja.rb に利用部品として書いて好きな時にユーザが呼び出せるようにしてしまえば良いかな。
web_steps_ja.rb
module NotificationHelpers
def ignore_notification(page)
page.evaluate_script("window.alert = function(msg) { return true; }")
page.evaluate_script("window.confirm = function(msg) { return true; }")
end
end
World(NotificationHelpers)</p>
<p>前提 /^通知を無視する$/ do
ignore_notification(page)
end
test.features (サンプル)
@javascript
シナリオ: 〜〜〜を登録する
前提 ログイン名が"xxxxx"、パスワードが"yyyy"のユーザでログインしている
前提 "〜〜〜登録"ページを表示している
前提 通知を無視する</p>
<pre><code> 〜以下任意のテスト〜
もし 〜をクリックする
ならば 〜が表示されていること
</code></pre>
<p>
上記テストを実行するとブラウザが勝手に起動してテスト動いていくので selenium に免疫のない人はびっくりしないように :-)
そもそも paths.rb の中で Model使えるのかとか思ったのですが、なんの事はない。普通に User.find(123) とかできるのですね。ちゃんと理解していないからこんな疑問が発生するのでしょう。
それはさておき。
when /フォロワーが([0-9]+)人いるユーザのプロフィール画面/
user = Users.find(:first, :conditions => { :follower => $1.to_i} )
edit_user_info_path(user.id)
([0-9]+) など、正規表現でマッチングさせておきと $1 で値渡してあげれば OK
正規表現のマッチングで () 内にヒットしたものが $1, $2…となるのを知らない人は意外にいるようだ。
paths.rb っていうか、結局 routes.rb の話なんだよね。