相关疑难解决方法(0)

RSpec测试破坏方法(Rails Tutorial 3.2 Ch.9,Ex.10)

注意:我已经阅读了这个问题和答案,但由于某些原因,代码对我不起作用.(见下面我得到的错误)

Rails教程第9章练习10要求您:修改[针对用户]的销毁操作,以防止管理员用户自行销毁.(先写一个测试.)

这里棘手的部分是测试它,因为应用程序已经为当前用户隐藏了"删除"链接,因此您必须直接执行http请求.

我让代码工作,并通过删除隐藏当前用户的删除链接的代码来测试它.果然,如果我点击当前登录用户的删除链接,它会重定向我并给我通知消息.

来自users_controller.rb

  def destroy
    @user = User.find(params[:id])
    if current_user?(@user)
      redirect_to users_path, notice: "You can't destroy yourself."
    else
      @user.destroy
      flash[:success] = "User destroyed."
      redirect_to users_path
    end
  end
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是在编写测​​试时会发送删除请求并调用destroy方法.我试过Rspec测试的解决方案,如果没有删除链接,我将在这里复制:

来自user_pages_spec.rb

 describe "destroy" do
    let(:admin) { FactoryGirl.create(:admin) }

    it "should not allow the admin to delete herself" do
      sign_in admin
      #expect { delete user_path(admin), method: :delete }.should change(User, :count)
      expect { delete :destroy, :id => admin.id }.should_not change(User, :count)
    end
  end
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我从RSpec得到了这个错误

Failures:

  1) …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails railstutorial.org

15
推荐指数
4
解决办法
2万
查看次数

Ruby on Rails语法

这是你知道如果你知道答案就会让你觉得愚蠢的问题之一,但我不能让这件事情起作用,所以这里就是这样.在railstutorial.org中我试图解决第10章末尾的练习5但是下面的代码有问题,我尝试的每个变体(例如使用'除')都不起作用.如果当前用户不是管理员用户,我只想执行两行代码.我哪里错了?

def destroy
  if !current_user.admin?
    User.find(params[:id]).destroy
    flash[:success] = "User destroyed."
  end
  redirect_to users_path
end
Run Code Online (Sandbox Code Playgroud)

编辑:我将当前用户与要删除的用户混淆.我正在使用Aditya的代码,我确信它是正确的,但现在我收到一条"无法运行测试"的消息,表明我的测试中存在语法错误(如下).

describe "as an admin user" do

  before(:each) do
    admin = Factory(:user, :email => "admin@example.com", :admin => true)
    test_sign_in(admin)
  end

  it "should not allow an admin user to destroy himself" do
    lambda do
      delete :destroy, :id => admin
    end.should_not change(User, :count)
  end

end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

0
推荐指数
1
解决办法
1951
查看次数

标签 统计

ruby-on-rails ×2

railstutorial.org ×1

rspec ×1

ruby ×1