ruby-on-rails - 如何在 Rails 3 的测试设置中设置 session 哈希?

标签 ruby-on-rails ruby-on-rails-3 http session tdd

我有以下测试通过:

test "should create order" do
    assert_difference('Order.count') do
      post :create, { :message_text => @order.attributes }, { :var_name => 1 }
  end

不是将 , { :var_name => 1 } 添加到每个 HTTP 调用,而是如何将 session 添加到设置方法?

谢谢!

最佳答案

在 Controller 测试中,您可以像访问 flash 一样访问 session

这是我用来设置程序 ID 的助手

def set_current_program(program=programs(:direct_debit))
  @current_program = program
  session[:program_id] = @current_program && @current_program.id
end

或者在设置中,你可以做

def setup
  session[:var_name] = 1
end

然后像往常一样做你的测试

test "should create order" do
  assert_difference('Order.count') do
    post :create, :message_text => @order.attributes
  end
end

如果操作应该改变它,您甚至可以断言 session 的值

assert_equal 24, session[:something_changed]

关于ruby-on-rails - 如何在 Rails 3 的测试设置中设置 session 哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6362551/

相关文章:

ruby-on-rails - 使用 VAPID : 400/401 Unauthorized Registration 进行网络推送

ruby-on-rails - 如何在 rails/rack 应用程序上与 node.js 实例共享身份验证?

javascript - JS 类方法未执行(Rails active_storage)

javascript - Backbone.js - 让 json 数据进入 View

java - 非标准 HTTP 方法和 Apache Http 组件

Java 和 PHP POST 请求不起作用

javascript - 在 Rails3 应用程序上实现完整日历

javascript - 具有事件的渲染部分的后响应不起作用

ruby-on-rails - 在暂存环境中覆盖 ActionMailer 主题

ruby-on-rails - 用于下拉框的 Ruby on Rails 静态列表选项