Я бигинер.Я изучал Rspec.
Я сделал реализацию, которая позволила мне делать хорошие посты.
Но в браузере я делаю ожидаемый ход, но тест не проходит.
Действие уничтожения проходит через тест, но действие создания не проходит тест.
Моя ошибка
Failure/Error: expect { post :create, format: :js, params: { post_id: post1.id, id: like.id } }.to change(Like, :count).by(1)
expected #count to have changed by 1, but was changed by 0
Мой код
require 'rails_helper'
RSpec.describe LikesController, type: :controller do
let!(:user) { create(:user) }
let!(:post1) { create(:post, user: user) }
let!(:like) { create(:like, user_id: user.id, post_id: post1.id) }
describe "#create" do
before do
sign_in user
end
it "response Ajex" do
post :create, format: :js, params: { post_id: post1.id, id: like.id }
expect(response.content_type).to eq 'text/javascript'
end
it "success like function" do
expect { post :create, format: :js, params: { post_id: post1.id, id: like.id } }.to change(Like, :count).by(1)
end
end
describe "#destroy" do
before do
sign_in user
end
it "response Ajex" do
delete :destroy, format: :js, params: { post_id: post1.id, user_id: user.id, id: like.id }
expect(response.content_type).to eq 'text/javascript'
end
it "delete like function" do
expect { delete :destroy, format: :js, params: { post_id: post1.id, user_id: user.id, id: like.id } }.to change(Like, :count).by(-1)
end
end
end
likes_controller.rb
class LikesController < ApplicationController
def create
@like =
current_user.likes.find_or_create_by(post_id:params[:post_id])
@likes = Like.where(post_id: params[:post_id])
@post = Post.find(params[:post_id])
end
def destroy
like = current_user.likes.find_by(post_id: params[:post_id])
like.destroy
@likes = Like.where(post_id: params[:post_id])
@post = Post.find(params[:post_id])
end
end
Я не могу решить эту проблему.Пожалуйста, научите меня подсказке.