У меня есть контроллер с этим методом индекса (app / controllers / api / v1 / users_controller.rb)
...
before_action :find_user, only: [:show, :destroy]
def index
@users = User.order('created_at DESC')
end
...
И у меня есть представление (app / view / api / v1 / users / index) . json .jbuilder)
json.array! @users do |user|
json.id user.id
json.name user.name
json.posts user.posts do |post|
json.id post.id
json.title post.title
json.body post.body
end
end
И когда я запускаю сервер, он работает нормально, после доступа к localhost:3000/api/v1/users
он показывает ожидаемый результат. Но когда я запускаю эти тесты RSpe c (spec / controllers / api / v1 / users_controller_spe c .rb)
require 'rails_helper'
RSpec.describe Api::V1::UsersController, type: :controller do
describe "GET #index" do
before do
get :index
end
it "returns http success" do
expect(response).to have_http_status(:success)
end
end
end
, я получаю ошибку
Если я удалить :index
из get :index
, это дает ту же ошибку, но (с учетом 0, ожидается 1). Почему get :index
отправляет 2 параметра, если есть только один, и как я могу переписать этот код, чтобы тест прошел?
Если я переписываю метод индекса, как этот
def index
@users = User.order('created_at DESC')
render json: @users, status: 200
end
Тест пройдёт, но в этом случае я не получу нужный мне файл JSON (который я сделал с помощью jbuilder)