【问题标题】:rspec-rails stopped stubbing views in controller test after upgrading to Rails 6升级到 Rails 6 后,rspec-rails 停止在控制器测试中存根视图
【发布时间】:2022-03-17 03:52:15
【问题描述】:

将我的 Rails 应用程序升级到版本 6 后,rspec 停止了存根视图渲染。 (https://relishapp.com/rspec/rspec-rails/v/5-0/docs/controller-specs/views-are-stubbed-by-default)

我尝试了几个 rspec 和 rspec-rails 版本,但结果总是一样。

预期的行为是调用 render 应该会产生一个空字符串,但调用 spec 中的控制器操作会像往常一样呈现模板。

在示例组中调用render_views false 无效。 render_views? 在示例中返回 false

当我在 Rails 5 中使用 binding.pry 调试控制器操作时,调用 render 返回 ""。在 Rails 6 中,调用 render 会呈现真正的模板。

这个例子很简单:

      it "is success" do
        get 'index'
        expect(response).to be_successful
      end

【问题讨论】:

    标签: ruby-on-rails ruby rspec rspec-rails ruby-on-rails-6


    【解决方案1】:

    在这里完成循环,OP 在 GitHub 问题中发现了这一点:

    https://github.com/rspec/rspec-rails/issues/2517

    这是由于在 before_action 回调中设置 view_paths 并使用此新路径在控制器上设置布局引起的。显然,在以前的 Rails 版本中这有效,但现在必须在类级别设置 view_paths(使用 prepend_view_paths 或类似的)才能使存根工作。

    【讨论】:

    • 你是怎么解决的?我有类似的问题。当我调试到 rspec view_rendering 时,我可以在那里找到三个路径(app/view、actiontext-6.0.4.7/app/views、actionmailbox-6.0.4.7/app/view)。那么你最终是如何解决这个问题的呢?您是否将 actiontext 视图路径添加到 view_paths 之前?或者以其他方式。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    相关资源
    最近更新 更多