水豚&黄瓜|获取Cookie [英] Capybara & Cucumber | Getting cookies
问题描述
我在尝试在黄瓜步骤中获取Cookie值:
步骤定义
当/ ^我登录$ / do
#登录的代码
end
然后/ ^ cookies应该设置$ / do
cookie [:author] .should_not be_nil
end
Controller
class SessionsController< ApplicationController
def create
cookies [:author] ='me'
redirect_to作者路径
end
end
但不起作用:
结果 b
$ b
预期:not nil
got:nil
有趣的是,在RSpec示例中所有工作都很好:
控制器规格 b
$ b
require'spec_helper'
describe SessionsController do
describe'create'do
it'sets cookies'do
post:create
cookies [:author] .should_not be_nil
end
end
end
如何使用Capybara在Cucumber步骤中获取Cookie值?
b
$ b
Debian GNU / Linux 6.0.4;
Ruby 1.9.3;
Ruby on Rails 3.2.1;
Cucumber 1.1.4;
Cucumber-Rails 1.2。 1;
Capybara 1.1.2;
Rack-Test 0.6.1。
步骤定义
然后/ ^ cookies应该设置^ / do
Capybara
.current_session#Capybara :: Session
.driver#Capybara :: RackTest :: Driver
.request#Rack :: Request
.cookies#{author=> me}
。[]('author')。should_not be_nil
end
但是,我仍然在寻找一个更简洁的方式。此外,我想知道如何在步骤定义中获取会话数据。
更新
要获取会话数据,请执行以下操作:
步骤定义
然后/ ^会话数据应该设置$ / do
cookies = Capybara
.current_session
.driver
.request
.cookies
session_key = Rails
.application
.config
.session_options
.fetch(:key)
session_data = Marshal.load(Base64.decode64(cookies.fetch(session_key)))
session_data ['author']。should_not be_nil
end
这也很冗长。
I'm trying to get cookie values in the Cucumber step:
Step definitions
When /^I log in$/ do
# code to log in
end
Then /^cookies should be set$/ do
cookies[:author].should_not be_nil
end
Controller
class SessionsController < ApplicationController
def create
cookies[:author] = 'me'
redirect_to authors_path
end
end
But it doesn't work:
Result
expected: not nil
got: nil
Interesting, that in the RSpec examples all works just fine:
Controller Spec
require 'spec_helper'
describe SessionsController do
describe 'create' do
it 'sets cookies' do
post :create
cookies[:author].should_not be_nil
end
end
end
How can I get cookie values in Cucumber steps using Capybara?
Thanks.
Debian GNU/Linux 6.0.4;
Ruby 1.9.3;
Ruby on Rails 3.2.1;
Cucumber 1.1.4;
Cucumber-Rails 1.2.1;
Capybara 1.1.2;
Rack-Test 0.6.1.
Step Definitions
Then /^cookies should be set^/ do
Capybara
.current_session # Capybara::Session
.driver # Capybara::RackTest::Driver
.request # Rack::Request
.cookies # { "author" => "me" }
.[]('author').should_not be_nil
end
This works, however, I'm still looking for a less verbose way. Moreover, I'd like to know how to get the session data in a step definition.
Updated
To get the session data one should do the following:
Step Definitions
Then /^session data should be set$/ do
cookies = Capybara
.current_session
.driver
.request
.cookies
session_key = Rails
.application
.config
.session_options
.fetch(:key)
session_data = Marshal.load(Base64.decode64(cookies.fetch(session_key)))
session_data['author'].should_not be_nil
end
This is quite verbose too.
这篇关于水豚&黄瓜|获取Cookie的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!