ruby-on-rails - 使用 capybara 进行 cucumber 测试中的 cookies

标签 ruby-on-rails cucumber capybara

作为我对网站的集成测试的一部分,我使用 cucumber 和 capybara。似乎 capybara 无法模仿使用 cookie。

例如我在用户登录时设置cookie:

    def sign_in(user)
      cookies.permanent.signed[:remember_token] = [user.id, user.salt]
      current_user = user
    end

但是,当我稍后使用 cookies.inspect 获取 cookie 的值时,它会返回 {} 这是 capybara 的已知限制吗?如果是这种情况,如何通过多个请求测试登录用户?

我应该添加我的测试:

Scenario: User is signed in when they press Sign In
 Given I have an existing account with email "bob@jones.com" and password "123456"
 And I am on the signin page
 When I fill in "Email" with "bob@jones.com"
 And I fill in "Password" with "123456"
 And I press "Sign In"
 Then I should see "Welcome Bob Jones"

最佳答案

这是适合我的步骤。它将cookie“admin_cta_choice”设置为等于从输入值派生的模型ID。

Given /I have selected CTA "([^"]+)"/ do |cta_name|
  cta = Cta.find_by_name(cta_name)
  raise "no cta with name '#{cta_name}'" if cta.nil?

  k = "admin_cta_choice"
  v = cta.id

  case Capybara.current_session.driver
  when Capybara::Poltergeist::Driver
    page.driver.set_cookie(k,v)
  when Capybara::RackTest::Driver
    headers = {}
    Rack::Utils.set_cookie_header!(headers,k,v)
    cookie_string = headers['Set-Cookie']
    Capybara.current_session.driver.browser.set_cookie(cookie_string)
  when Capybara::Selenium::Driver
    page.driver.browser.manage.add_cookie(:name=>k, :value=>v)
  else
    raise "no cookie-setter implemented for driver #{Capybara.current_session.driver.class.name}"
  end
end

关于ruby-on-rails - 使用 capybara 进行 cucumber 测试中的 cookies ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4176958/

相关文章:

java - 使用 selenium webdriver 检查的 www 站点中的 Cucumber 自动验证大型文本文件(日志)的方法

ruby-on-rails - 使用 Capybara/Selenium 测试 html5 文件上传?

ruby-on-rails - ActiveRecord多级单表继承查询

ruby-on-rails - Rails 测试 assert_select 与 assert_selector

ruby-on-rails - 在应用程序中混淆数字 ID 的最佳方法是什么

java - 如何为 Cucumber stepdef 指定源 jar

java - TestNG 和 cucumber : Pass in single feature file name as parameter

ruby-on-rails - Rspec+Capybara 可选更改 JS 驱动

jquery - 在 Capybara 测试中使用 jQuery

ruby-on-rails - 对于一般的 Rails 项目,我应该选择哪种持续集成服务?