Я новичок в тестировании RSpec и в настоящее время пытаюсь добавить тесты к существующему контроллеру для приложения Rails 4. Вот приложение ссылка Github, в случае, если вам нужно больше информации: https://github.com/iacobson/Zero2DevRails 4 с Devise, тестирование Контроллеры с Rspec
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"
Я пробовал много ot ее варианты из учебника Devise или из других уроков или ответов, которые я нашел в Интернете, но все закончилось ошибкой. Я даже попытался исключить проверку current_user у контроллера, но никаких шансов.
Что бы правильный способ проверить разрушающие действия в контроллере, используя Rails4, Завещание и RSpec
Спасибо!
Спасибо! Это делает так много смысла, и мой вопрос так глупо ... Я искал совершенно неправильное место для ошибки. – iacobSon
Я определенно сделал это для себя много в прошлом: -D Это всегда простые вещи, которые вас трогают дольше всех. –