【发布时间】:2020-03-08 18:24:30
【问题描述】:
我有一个非常简单的 RSpec 控制器测试,如下所示:
require 'rails_helper'
RSpec.describe IndexController, type: :controller do
describe 'GET #index' do
it 'returns http success' do
get :index
expect(response).to have_http_status(:success)
end
end
end
它失败并出现错误:
1) IndexController GET #index returns http success
Failure/Error: get :index
ActionView::Template::Error:
wrong number of arguments (given 2, expected 1)
# ./spec/controllers/index_controller_spec.rb:6:in `block (3 levels) in <top (required)>'
# ------------------
# --- Caused by: ---
# ArgumentError:
# wrong number of arguments (given 2, expected 1)
# ./spec/controllers/index_controller_spec.rb:6:in `block (3 levels) in <top (required)>'
第 6 行是get :index。为什么它声称有 2 个论点?只给出了 1 个。
控制器如下所示:
class IndexController < ApplicationController
end
app/views/index/index.html.erb 中的视图如下所示:
Nothing to see here.
它可以在这条路线上正常工作:root to: 'index#index'。
有什么想法吗?
【问题讨论】:
-
除非这是一个遗留应用程序,完全跳过控制器规范,只去请求规范。不鼓励使用它们。 github.com/rspec/rspec-rails#request-specs
标签: ruby-on-rails testing rspec