我是 Ruby 和 Rails 的新手,这就是我阅读 Michael Hartl 的 Rails 教程的原因。我被困在第 9 章,练习 #9。我已将用户控制器中的 def destroy 代码更新为:
def destroy
user = User.find(params[:id])
if (current_user == user) && (current_user.admin?)
flash[:error] = "Can not delete own admin account!"
else
user.destroy
flash[:success] = "User destroyed."
end
redirect_to users_path
end
当我通过在管理员登录时将“删除”链接添加到 current_user 来在浏览器中进行测试时,这似乎有效。但练习中说要先编写一个测试——我这样做了,但似乎没有用。这是我的测试:
describe "as admin user" do
let(:user_admin) { FactoryGirl.create(:admin) }
before { sign_in user_admin }
describe "submitting a DELETE request to destroy own admin account" do
before { delete user_path(user_admin) }
it { should have_selector('div.alert.alert-error', text: 'delete own admin') }
end
end
也许我正在测试的东西不应该被测试。如何测试用户控制器中对 def destroy 代码的修改?