【问题标题】:Rails4 rails-api test: undefined session_serializer when testing auth via headers tokenRails4 rails-api 测试:通过标头令牌测试身份验证时未定义 session_serializer
【发布时间】:2014-08-21 14:38:56
【问题描述】:

为了练习 minitest,我编写了一个小应用程序。堆栈版本化为 如下:

  • Rails 4.1.4
  • 红宝石 2.1.2p95
  • 设计 3.2.4
  • devise_token_auth 0.1.25
  • rails-api 0.2.1

应用程序是按照 rails-api 指令从头开始生成的,我可以看到 一切都在客户端按预期工作。

我遇到的困难是控制器的测试必须处理 身份验证。

这种测试的灵感来自:

https://github.com/lynndylanhurley/devise_token_auth/blob/master/test/controllers/demo_controller_test.rb

我的测试代码位于:http://pastebin.com/iPVk9Tzq

当我运行测试套件时,我得到以下错误:

PostsControllerTest#test_get_index_is_successful_if_logged_in:
NoMethodError: undefined method `session_serializer' for nil:NilClass
  test/controllers/posts_controller_test.rb:24:in `block in <class:PostsControllerTest>'

我在网上尝试了不同的搜索,但我无法弄清楚如何解决 这个问题。

我了解该错误的发生是因为应用程序是作为无状态 API 实现的,因此在任何地方都没有存储会话。

显然,如果我注释掉“request.headers.merge!...”行,错误就会消失 并且测试失败并返回 401(当用户未登录时应该如此)。

任何帮助/建议都会受到广泛赞赏!

问候

【问题讨论】:

    标签: ruby-on-rails api devise minitest rails-api


    【解决方案1】:

    原来我只是忘记在我的控制器测试类中包含 Devise::TestHelpers ...

    对不起:/

    【讨论】:

      猜你喜欢
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-02
      • 2021-01-03
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多