ruby-on-rails - 如何在 Rails 5 的测试 Controller 中使用 session ?

标签 ruby-on-rails session testing

<分区>

Agile Web Development With Rails4 给出了一个示例测试代码,如下所示:

carts_controller_test.rb:

test "should destroy cart" do
  assert_difference('Cart.count', -1) do
    session[:cart_id] = @cart.id
    ...

但是,当我在 rails 5 中尝试这个时

>>rake test

出现错误

NoMethodError: undefined method `session' for nil:NilClass

如何在 Rails 5 的测试 Controller 中使用 session ?还是我忽略了一些重要的配置?

最佳答案

在 Rails 5 中,不再可能在 Controller 测试中访问 session :http://blog.napcs.com/2016/07/03/upgrading-rails-5-controller-tests/。建议是访问将为您设置适当 session 值的 Controller 方法。此评论显示了您可能如何解决此限制的示例:https://github.com/rails/rails/issues/23386#issuecomment-192954569

  # helper method
  def sign_in_as(name)
    post login_url, params: { sig: users(name).perishable_signature )
  end

class SomeControllerTest
  setup { sign_in_as 'david' }

  test 'the truth' do
  ..

关于ruby-on-rails - 如何在 Rails 5 的测试 Controller 中使用 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39465941/

相关文章:

ruby-on-rails - 使用 NGINX 和 Unicorn 在 Rails 3 应用程序中通过 SSL 提供 Assets 服务

javascript - 防止通过浏览器后退和前进按钮下载

ruby-on-rails - session 之间的差异 [:food] and cookies. 永久 [:food]

sql-server - 如何在内存中使用 SQL Server 进行集成测试?

ruby-on-rails - 无法使用 rails 6 actiontext 渲染 youtube 嵌入 iframe

ruby-on-rails - Dotenv 多行变量

ruby-on-rails - 如何自动将 OSM 数据集加载到 rake db :create or migrate 上的 rails postgresql db

api - 如何为公共(public) RESTful API 设计不需要的身份验证

android - Espresso 测试 - Android

java - Alexa BDD 测试