フロントエンドとやり取りしてdbに投稿するアプリケーションを作成しています。私の削除エンドポイントでは、端末ではレコードが削除されたものとして表示されます。しかし、私のテストでは、それはまだそこに表示されます。ここに私のテストがあります...Railsはターミナルのレコードを削除しますが、RSpecにはまだレコードが表示されています
it 'can delete just one favorite leaving the rest' do
user = create(:user)
vid = video_payload
vid_2 = video_payload_2
post "/api/v1/users/#{user.id}/favorites/#{vid[:id]}", params:video_payload
post "/api/v1/users/#{user.id}/favorites/#{vid_2[:id]}", params:video_payload_2
expect(user.favorites.length).to eq(2)
expect(user.favorites[1].video_id).to eq(vid_2[:id].to_i)
delete "/api/v1/users/#{user.id}/favorites/#{vid[:id]}"
expect(user.favorites.length).to eq(1)
expect(user.favorites[0].video_id).to eq(vid_2[:id].to_i)
end
削除後の期待は失敗です。
def destroy
# user = User.find(params[:id])
# favorite = Favorite.find_by(user_id: params[:id], video_id: params[:video_id])
# render json: Favorite.delete(favorite.id)
user = User.find(params[:id])
favorite = Favorite.find_by(user_id: params[:id], video_id: params[:video_id])
user.favorites.delete(favorite) if favorite
end
私は
好きなユーザーと別のテーブル間の結合である(コメントアウトしてコメントを外し)レコードを削除するために、これらの二つの方法を試してみました。それは多対多の関係です。私は他のテーブルやユーザーに依存して破壊し、それと同じエラーが発生しないようにしようとしました。あなたのスペックで
あなたは念のためにあなたの仕様でユーザーオブジェクトを再読み込みしようとしたことがありますか? 'user.reload.favorites.length'のようなものを試すことができます。 –
@DerekHopperそれはトリックでした!ありがとうございました。あなたが答えを提出すれば、私はそれを受け入れてクレジットを得ることができます:D私はそれをターミナルで行いましたが、それがテストで成し遂げられることを認識しませんでした。私は今それを読んで行くつもりです。再度、感謝します。 –