Я новичок в тестировании RSpec и в настоящее время пытаюсь добавить тесты в существующий контроллер для приложения Rails 4. Вот ссылка на приложение Github, если вам нужна дополнительная информация: https://github.com/iacobson/Zero2Dev а>
resources_controller.rb
class ResourcesController < ApplicationController
before_action :authenticate_user!, only:[:new, :create, :destroy]
def destroy
@resource = current_user.resources.find(params[:id])
@resource.destroy
redirect_to resources_path
end
private
def resource_params
params.require(:resource).permit(:content, :user_id)
end
end
resources_controller_spec.rb
require 'rails_helper'
RSpec.describe ResourcesController, type: :controller do
describe "DELETE #destroy" do
let(:user1) {User.create!(name:"John", email:"[email protected]", password:"password")}
let(:user2) {User.create!(name:"Mary", email:"[email protected]", password:"password")}
let(:resource){user1.resources.create!(content: "Neque porro quisquam est qui dolorem ipsum")}
it "deletes resource when user 1 (that created the resource) is logged-in" do
sign_in user1
delete :destroy, id: resource.id
puts resource.content
expect(resource.content).to be_nil
end
end
end
но похоже, что "ресурс" никогда не удаляется:
Failure/Error: expect(resource.content).to be_nil
expected: nil
got: "Neque porro quisquam est qui dolorem ipsum"
Я пробовал много других вариантов из учебника Devise или из других руководств или ответов, которые я нашел в Интернете, но все закончилось ошибкой. Я даже пытался исключить проверку current_user из контроллера, но безуспешно.
Каким будет правильный способ протестировать действие Destroy в контроллере, используя Rails4, Devise и Rspec
Спасибо !