# 毎回検索したりしてるのでメモ
rake db:fixtures:load
test/fixtures に配置した テーブル名.yml(yaml形式で記述されたデータ定義) ファイルをDBに登録する。
テーブル名指定
FIXTURES=x,y
ex. rake db:fixtures:load FIXTURES=x,y
サブディレクトリ指定 (test/fixtures 以下でサブディレクトリを切ってデータを分ける場合など)
FIXTURES_DIR=z
ex. rake db:fixtures:load FIXTURES=x,y FIXTURES_DIR=z
ディレクトリ指定 (test/fixtures 以外でパス指定する場合)
FIXTURES_PATH=spec/fixtures
ex. rake db:fixtures:load FIXTURES=x,y FIXTURES_PATH=spec/fixtures
Load fixtures into the current environment’s database. Load specific fixtures using FIXTURES=x,y. Load from subdirectory in test/fixtures using FIXTURES_DIR=z. Specify an alternative path (eg. spec/fixtures) using FIXTURES_PATH=spec/fixtures.
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)
前提 /^通知を無視する$/ do
ignore_notification(page)
end
test.features (サンプル)
@javascript
シナリオ: 〜〜〜を登録する
前提 ログイン名が"xxxxx"、パスワードが"yyyy"のユーザでログインしている
前提 "〜〜〜登録"ページを表示している
前提 通知を無視する
〜以下任意のテスト〜
もし 〜をクリックする
ならば 〜が表示されていること
#上記テストを実行するとブラウザが勝手に起動してテスト動いていくので selenium に免疫のない人はびっくりしないように :-)