2011-07-01 7 views
3

現在、Rspecとcapybaraを使ってブラウザを駆動するRuby on Railsアプリケーションの仕様を書いています。Ruby on Railsでテスト中に仕様内のセッション変数の値を変更する(capybaraとseleniumを使用)

仕様の1つを実行している間、私はセッション変数の値を変更したいと思います。 例:session[:location]="US"を設定して、すべての値が$で表示されている間にアプリケーションをテストできるようにします。それについてどうすればいいですか?

答えて

0

Capybara/Seleniumの仕様は受け入れテスト用です。あなたはどんな種類の嘲笑、スタブ、または...セッション値を直接変更するべきではありません。通常のユーザーがブラウザで行うのと同じように、仕様内からアプリケーションと対話する必要があります。

あなたのアプリにどのような場所が設定されていますか?ユーザーが手動で設定することはできますか?はいの場合は、前のブロックのスペックでそれを実行する必要があります。

+0

yea..iアイデアを得る。どのように私は場所を変更するだろうか?現在、ジオキットによってその場所が選択されています。セッション[:location] = "US"を変更するのは私のためです。私はそれを各ブロックの前に置くことはできません.itは "未定義メソッド 'session' for nil:NilClass"エラーを発生させています – Themasterhimself

+0

これを解明しましたか?毎回ログインしなくて済むように、セッション[:user_id] = 123を実行できるようにしたい。 –

0

キュウリのシナリオでは、いくつかのケースをテストする機会があります.Givenブロックでユーザーを作成したり、dbなどに何かを追加したりするような変更を加えなければなりません。セッションは、dbやi thnikと同じリソースです。テストの準備をする必要があります。それがエンドユーザーとどのくらい強く結びついているのかは分かりません。

セッションでいくつかの情報ビートワイドのステップを保存している、いくつかのマルチステップアプリケーションを作成したとします。あなたのクライアントは、このいくつかのステップのいずれかで彼の予約を想像することさえできませんでした。だからこの数点からは、各段階ごとに受け入れテストを分離して作成するための邪魔をしないようです。しかし、あなたのクライアントが4番目のステップでいくつかのスーパーユーザフレンドリーな検証を追加したいと思ったら、今、彼はこの側面とこの妥当性検査でただ納得しています。おそらく、彼は他の余分な第4ステップを扱うことができましたが、なぜですか?彼はすでにこのスタッフ全員を見て受け入れています。

この点についてどう思いますか?

+0

理想的には可能なはずです。あなたが言ったように、dbはbefore:各セクションで変更できますが、ブラウザがページを訪れる前にセッション変数を変更するのは意味がありません。 – Themasterhimself

+0

あなたは知っている、私はこれのようなsomethinkについて考えていた: –

+0

私はこのようなsomethinkについて考えていた:知っている、Press book、Then ...だから、与えられたステップでは、あなたが訪問し、最初のステップから始まる4ステップ予約フローのページを準備し、4ステップに進むために必要なものすべてを置くことができます。 –