Как я могу проверить подписанные или постоянные куки с rspec? - PullRequest
4 голосов
/ 17 октября 2011

Я могу написать куки на запрос штрафа с:

request.cookies['foo'] = 'bar'

Но ни одна из этих работ:

request.cookies.permanent['foo'] = 'bar'
request.cookies.signed['foo'] = 'bar'
request.cookies.permanent.signed['foo'] = 'bar' # what I really want

Я получаю пустые хеш-сообщения, такие как сообщения:

NoMethodError:
    undefined method `signed' for {}:Hash

Как я могу создать эти куки для моих тестов?

Я использую рельсы 3.1 и rspec 2.6.0.

Ответы [ 2 ]

5 голосов
/ 19 марта 2014

Использовать

cookies.permanent['foo'] = 'bar'
cookies.signed['foo'] = 'bar'
cookies.permanent.signed['foo'] = 'bar' 

Вместо

0 голосов
/ 25 июля 2012

Скажем, у вас есть следующий помощник Rails:

module ApplicationHelper
  def set_cookie(name, value)
    cookies.permanent.signed[name] = value
  end
end

Чтобы проверить это в Rails 3.2.6 с использованием RSpec 2.11.0 , вы можете сделать следующее:

require 'spec_helper'

describe ApplicationHelper do
  it "should set a permanent, signed cookie" do
    cookies.should_receive(:permanent).once.and_return(cookies)
    cookies.should_receive(:signed).once.with(:user_id, 12345)
    helper.set_cookie(:user_id, 12345)
  end
end

У меня никогда не было проблем с использованием rspec для проверки cookies.signed[:foo].should == 'bar', но добавление вызова cookies.permanent доставляло мне проблемы в прошлом. Выше я просто заглушаю метод permanent и снова возвращаю объект cookies. Это позволяет мне проверить, что он был вызван.

Вы действительно не должны беспокоиться о погодных рельсах Сам установить постоянный cookie, потому что это уже было проверено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...