Я не могу смоделировать мой form_tag в Rspec.Form_tag будет упаковывать хэш параметра как простой хеш, в то время как Rspec будет упаковывать хэш с параметрами с параметрами, в данном случае внутри: хеш сеанса, например:
{"сеанс" => {"email" => "billy@example.com", "password" => "foobar"}, "controller" => "session", "action" => "create"}
vs Rails form_tag:
{"utf8" => "✓", "authenticity_token" => "AiurjCANkzCJFl + oiJK2tQVzzxrET260bo1wxuDHB74 =", "email" => "billy@example»"password" => "foobar", "commit" => "Войти в систему", "action" => "create", "controller" => "session"}
Контроллер Sessionsиспользуя:
user = User.find_by_email(params[:email])
для извлечения параметра электронной почты.Это будет работать для разработки, но для теста Rspec я должен был бы использовать:
user = User.find_by_email(params[:session][:email])
Вот мой последний тест Rspec:
describe "success" do
before(:each) do
@user = Factory(:user)
@attr = {:email => @user.email, :password => @user.password }
end
it "should redirect to the user show page" do
#post :create, :session => @attr #same results
post sessions_path(:email => @user.email, :password => @user.password)
response.should have_selector('h1', :content => @user.full_name)
end
end
Это не удастся из-за разницы вхэш параметра выше.Есть ли способ в Rspec отправлять параметры контроллеру сеанса в одном хеше, чтобы они соответствовали тегу form_tag, как показано выше?