生成的 RSpec 控制器测试失败,参数数量错误(给定 2,预期为 1)

Bla*_*man 8 rspec ruby-on-rails

我有一个全新的 rails 6 应用程序,我安装了 rspec。

我创建了一个控制器,当我运行 rspec 时出现此错误:

PagesController GET #index returns http success
     Failure/Error: get :index

     ActionView::Template::Error:
       wrong number of arguments (given 2, expected 1)
     # ./spec/controllers/pages_controller_spec.rb:7:in `block (3 levels) in <top (required)>'
     # ------------------
     # --- Caused by: ---
     # ArgumentError:
     #   wrong number of arguments (given 2, expected 1)
     #   ./spec/controllers/pages_controller_spec.rb:7:in `block (3 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

生成的 rspec 测试如下所示:

require 'rails_helper'

RSpec.describe CartController, type: :controller do

  describe "GET #index" do
    it "returns http success" do
      get :index
      expect(response).to have_http_status(:success)
    end
  end

end
Run Code Online (Sandbox Code Playgroud)

生成的代码中是否存在错误,还是其他一些环境问题是导致此问题的原因?

我没有看到任何地方有 2 个参数?

ano*_*rmh 10

根据Rails 6的以下GitHub 问题,升级到rspec-rails 4.0

gem 'rspec-rails', '~> 4.0.0.beta3'
Run Code Online (Sandbox Code Playgroud)

这也在rspec-rails 的这个 GitHub 问题中被引用。

2021 年 7 月更新

这个问题会产生非常规律的流量,而 rspec-rails 现在远远超过 4.0.0beta3 版本。(截至今天的 v5.0.1)始终在https://rubygems.org/gems/rspec-rails 上检查最新版本并使用它:

gem 'rspec-rails', '~> 5.0.1'
Run Code Online (Sandbox Code Playgroud)