2015-03-15 1 views
1

Я пытаюсь прочитать в Rspec 3.1 cookie, полученный после вызова. Я вижу, что он возвращается, но last_response.cookies не существует. Как я могу прочитать cookie отклика?Невозможно прочитать cookie в Rspec 3 через last_response

it "doesn't signs in" do 
    get '/ui/pages/Home' 
    puts last_response.cookies 
    end 
+0

Не могли бы вы добавить код, который используете в настоящий момент, что привело к неожиданному возврату? –

+0

Вы проверили еще один ответ в [SO] (http://stackoverflow.com/questions/5335183/using-cookies-with-racktest)? Это может помочь. Удачи! –

+0

Мне нужно, чтобы файлы cookie ответов не запрашивались – Himberjack

ответ

0

Я знаю, что это было некоторое время, но перед точно этим же вопросом сейчас, после некоторой борьбы, я нашел статью, которая разделяет here интересный подход. Поскольку я также не мог найти какой-либо собственный метод parsed для этого, это отлично сработало для меня.

В основном, поместите этот кусок кода ниже на вашем spec/spec_helper.rb:

def cookies_from_response(response=last_response) 
    Hash[response["Set-Cookie"].lines.map { |line| 
    cookie = Rack::Test::Cookie.new(line.chomp) 
    [cookie.name, cookie] 
    }] 
end 

и вы могли бы использовать это, чтобы увидеть разобранный hash:

puts cookies_from_response 

Для проверки значения куки, вы могли бы тогда используйте что-то вроде:

# Given your cookie name is 'foo' and the content is 'bar' 
expect(cookies['foo'].value).to eq 'bar' 

Надеюсь, это становится полезной для других, сталкивающихся с подобными проблемами.