gpt4 book ai didi

ruby-on-rails - 如何使用 RSpec 测试这种销毁操作?

转载 作者:行者123 更新时间:2023-12-04 06:03:40 25 4
gpt4 key购买 nike

在我的 Rails 应用程序中,如果 user想要删除他自己的帐户,他首先必须在我的 terminate 中输入他的密码看法:

<%= form_for @user, :method => :delete do |f| %>

<%= f.label :password %><br/>
<%= f.password_field :password %>

<%= f.submit %>

<% end %>

这是我的 UsersController :
def terminate
@user = User.find(params[:id])
@title = "Terminate your account"
end

def destroy
if @user.authenticate(params[:user][:password])
@user.destroy
flash[:success] = "Your account was terminated."
redirect_to root_path
else
flash.now[:alert] = "Wrong password."
render :terminate
end
end

问题是我似乎找不到用 RSpec 测试这个的方法。

我有的是这个:
describe 'DELETE #destroy' do

before :each do
@user = FactoryGirl.create(:user)
end

context "success" do

it "deletes the user" do
expect{
delete :destroy, :id => @user, :password => "password"
}.to change(User, :count).by(-1)
end

end

end

但是,这给了我一个错误:
ActionView::MissingTemplate:
Missing template users/destroy, application/destroy with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder]}. Searched in:
* "#<RSpec::Rails::ViewRendering::EmptyTemplatePathSetDecorator:0x007fa7f51310d8>"

任何人都可以告诉我我在这里缺少什么或建议一种更好的方法来测试此操作吗?

谢谢你的帮助。

最佳答案

好的,这是我的解决方案:

describe 'DELETE #destroy' do

context "success" do

it "deletes the user" do
expect{
delete :destroy, :id => @user, :user => {:password => @user.password}
}.to change(User, :count).by(-1)
end

end

end
before :each我之前的电话没用(毕竟这不是集成测试)。密码必须像这样传入: :user => {:password => @user.password}直到阅读时我才知道 this thread .

关于ruby-on-rails - 如何使用 RSpec 测试这种销毁操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19810635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com