【发布时间】:2015-05-07 16:11:45
【问题描述】:
我是 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:"john@mail.com", password:"password")}
let(:user2) {User.create!(name:"Mary", email:"mary@mail.com", 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 验证,但没有机会。
使用 Rails4、Devise 和 Rspec 在控制器中测试 Destroy 操作的正确方法是什么
谢谢!
【问题讨论】:
标签: ruby-on-rails rspec devise controller destroy