Я пытаюсь написать спецификационный код для моего контроллера.И я не уверен, где происходит сбой.
Код контроллера
def index
@users = User.all
end
def update
authorize! :update, @user
respond_to do |format|
if @user.update(user_params)
format.html { redirect_to user_index_path }
else
format.html { render :index }
end
end
end
private
def set_user
@user = User.find(params[:id])
end
def user_params
params.permit(:active)
end
Спецификация для вышеуказанного контроллера
RSpec.describe UserController, type: :controller do
describe 'GET #index' do
let(:user) {User.create!(name: "hari")}
context 'with user details'do
it 'loads correct user details' do
get :index
expect(response).to permit(:user)
end
end
context 'without user details' do
it 'doesnot loads correct user details' do
get :index
expect(response).not_to permit(:user)
end
end
end
describe 'Patch #update' do
context 'when valid params' do
let(:attr) do
{active: 'true'}
end
before(:each) do
@user = subject.current_user
put :update, params: { user: attr }
@user.reload
end
it 'redirects to user_index_path ' do
expect(response).redirect_to(user_index_path)
end
it 'sets active state' do
expect(@user.active?('true')).to be true
end
end
context 'when invalid param' do
let(:attr) do
{active: 'nil'}
end
before(:each) do
@user = subject.current_user
put :update, params: { user: attr }
@user.reload
end
it 'render index' do
expect(respone.status).to eq(200)
end
it 'doesnot change active state' do
expect(@user.active?(nil)).to be true
end
end
end
end
Я только новичок и попробовалкод спецификации для моего контроллера, проверив https://relishapp.com/rspec/rspec-rails/docs/gettingstarted. Можете ли вы помочь мне, где моя спецификация работает неправильно, или кто-нибудь может дать мне несколько тестовых примеров для этих методов или может перенаправить меня в руководство по rspec?сбой метода индекса, и мой
журнал терминала равен
1) UserController GET #index with user details loads correct user details
Failure/Error: expect(response).to permit(:user)
NoMethodError:
undefined method `permit' for #<RSpec::ExampleGroups::UserController::GETIndex::WithUserDetails:0x00005614152406b0>
Did you mean? print
# ./spec/controllers/user_controller_spec.rb:10:in `block (4 levels) in <top (required)>'