Не уверен, какой сериализатор вы используете.Но render
не является методом для ActiveModel::Serializer
.Попробуйте вместо этого:
module Api
class TransactionsController < ApplicationController
def index
transactions = Transaction.all
render json: transactions
end
end
end
Если ваш TransactionSerializer
является ActiveModel::Serializer
, Rails, как правило, просто использует его для сериализации каждой записи транзакции в ActiveRecord::Relation
.
И проверьте это следующим образом:
require 'rails_helper'
describe Api::TransactionsController do
describe '#index' do
context "when there's no transactions in the database" do
let(:transactions) { Transaction.none }
before do
allow(Transaction).to receive(:all).and_return(transactions)
get :index
end
specify { expect(response).to have_http_status(200) }
specify { expect(JSON.parse(response.body)).to eq([]) }
end
end
end
Часть проблемы здесь, возможно, заключалась в том, что вы на самом деле не вызывали get :index
до тех пор, пока after
тесты не запустились.Вам нужно позвонить до запуска тестов.