7

deviseの記憶に残る機能(remember me cookie)をテストするCucumber機能が欲しいのですが。

capybaraを使用して[rememberme]チェックボックスをオンにするのは簡単ですが、ウィンドウを閉じた後にサイトに戻るユーザーをどのようにシミュレートする必要がありますか?

4

5 に答える 5

1

キュウリ/カピバラでDeviseのremember-me機能をテストするために、次のラックテストハックと、少しクリーンなセレンAPIの使用を思いつきました。セッション Cookie を手動で消去するようにドライバーに指示するだけです。すべてのドライバーがサポートされているわけではありません。使用した 2 つだけを実装しました。

http://gist.github.com/484787

これは、セッションの Cookie ストレージを想定しています。シナリオから @announce タグを削除して、冗長性を取り除きます。

Matt Wynne がメーリング リストのディスカッションで提案した別のオプションは、他の Cookie ストアを調べて、クエリまたはファイルの削除によってそれらを削除することです。

アジャイルレールブックから持ち上げた:

config.action_controller.session_store = CGI::Session::PStore (or just :p_store)
config.action_controller.session_options[:tmpdir] = "/Users/dave/tmp" 
config.action_controller.session_options[:prefix] = "myapp_session_"

また

rake db:sessions:create
config.action_controller.session_store = :active_record_store

Rails にもリセット セッション メソッドがありますが、カピバラでテストするときに Rails セッションにフックできないため、これにアクセスできないと思います。

お役に立てれば、

ニック

于 2010-08-27T12:50:59.343 に答える
1

nruth の要点は本当に役に立ちましたが、名前で Cookie を削除するのは不正行為のように感じました。ブラウザーを閉じて再起動したときにブラウザーが削除する Cookie を削除するステップを作成しました (有効期限が設定されておらず、将来設定されていない Cookie)。

このコミットで確認できます(ただし、Selenium をセットアップしていないため、RackTest ドライバーに対してのみ実行しました)。この commitで私の login/remember_me 機能も確認できます。そして、クラスをリファクタリングして、このコミットでファイルを分離しました。

お役に立てば幸いです。

于 2010-12-17T03:57:35.030 に答える
0

これを実現するためにemail-specを使用しました。私のシナリオは次のようになります。

@allow-rescue
Scenario: Create New Account (Everything cool)
Given I am not authenticated
When I go to register
And I fill in "Name" with "bill"
And I fill in "Email" with "bill@example.com"
And I fill in "Password" with "please"
And I fill in "Password Confirmation" with "please"
And I press "Sign up"
Then "bill@example.com" should receive an email
And I open the email
And I should see "Confirm my account" in the email body
When I follow "Confirm my account" in the email
Then I should see "Your account was successfully confirmed. You are now signed in."

Deviseを使用するときに必要なシナリオの上の@allow-rescue装飾に注意してください。

お役に立てれば。

于 2010-08-12T14:42:46.927 に答える
0

カピバラでログアウトしてから、次のようにログインし直すことができると思います

Given I am on the login screen
And I select 'Remember Me'
And I click 'login'
Then I should be 'logged in'
When I click 'log out'
Then I should be 'logged out' #=> potentially destroy a session here?
When I click log in
Then I should be logged in
And I should not be directed to the login form.

これ、cabybara の現在の Cookie 状態を使用して、このフローをモデル化する必要があります。

于 2010-08-27T12:20:50.480 に答える