gpt4 book ai didi

ruby - 使用 Webrat 进行测试时如何处理 cookie?

转载 作者:行者123 更新时间:2023-11-28 20:47:46 26 4
gpt4 key购买 nike

我正在使用 Webrat 为基于 Sinatra 的应用程序编写 Cucumber 测试。对于某些测试,我需要实现类似

的场景
Given I am logged in as admin
When I am visiting "/"
Then I should see "Settings"

我这样定义步骤:

Given /^I am logged in as "(.+)"$/ do |user|
visit "/login"
fill_in "login", :with => user
fill_in "password", :with => "123456"
click_button "Login"
end

When /^I am viewing "(.+)"$/ do |url|
visit(url)
end

Then /^I should see "(.+)"$/ do |text|
response_body.should =~ /#{text}/
end

成功创建cookie

response.set_cookie(cookie_name, coockie_value)

然后在用户尝试通过辅助方法访问管理页面时在 View 中进行验证:

def logged_in?
request.cookies[cookie_name] == cookie_value
end

Webrat 似乎不存储 cookie。测试不报告任何错误,但是“logged_in?” in views 始终为 false,就像未保存 cookie 一样。

我做错了什么吗?如果这就是 Webrat 的工作方式,那么最好的解决方法是什么?

最佳答案

真正的问题是 Sinatra 在测试环境中处理 session 的方式。在 Google 群组中搜索讨论,但真正的解决方案是简单地使用:

use Rack::Session::Cookie

并且不是

enable :sessions

使用 Selenium 很好,但作为 OP 问题的解决方案就有点矫枉过正了。

关于ruby - 使用 Webrat 进行测试时如何处理 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/681183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com