如何使用Cucumber测试Devise的可记忆功能?

srb*_*ert 7 ruby-on-rails cucumber devise

我想要一个Cucumber功能测试设计的可记忆功能(记住我的cookie).

使用capybara很容易检查记住我复选框但是我应该如何模拟关闭窗口后返回网站的用户?

nru*_*uth 1

我想出了以下机架测试 hack 和稍微干净的 selenium api 使用,来测试 Cucumber/capybara 中的 Devise 记住我功能。它只是告诉驱动程序手动删除会话 cookie。并非所有驱动程序都受支持,我只实现了我使用过的两个:

http://gist.github.com/484787

这假定会话的 cookie 存储。从场景中删除 @announce 标签以消除冗长。

Matt Wynne 在邮件列表讨论中建议的另一种选择可能是查看其他 cookie 存储,并通过查询或文件删除来删除它们:

摘自《Agile Rails》一书:

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_"
Run Code Online (Sandbox Code Playgroud)

或者

rake db:sessions:create
config.action_controller.session_store = :active_record_store
Run Code Online (Sandbox Code Playgroud)

Rails 还有一个重置会话方法,但我相信我们无法访问它,因为在使用水豚进行测试时我们无法连接到 Rails 会话。

希望这可以帮助,

缺口