如何确认对象是否在 rails-for-API 中被删除?
how to confirm if the object was deleted in rails-for-API?
我创建了一个 destroy 方法,现在我想知道如何测试和渲染对象是否成功删除。
def destroy
if @syllabus.destroy
render :no_content
else
end
end
我想你正在寻找类似 rspec-rails 的东西,
在 gem 存储库上关注 installation instructions 后,您可以生成一个测试文件:
bundle exec rails generate rspec:controller my_controller
这将生成如下文件:
# spec/controllers/my_controller_spec.rb
require 'rails_helper'
RSpec.describe MyControllerController, type: :controller do
# your code goes here...
end
然后你可以添加一个这样的测试例子:
# spec/controllers/my_controller_spec.rb
require 'rails_helper'
RSpec.describe MyControllerController, type: :controller do
#replace attr1 and attr2 with your own attributes
let(:syllabus) { Syllabus.create(attr1: 'foo', attr2: 'bar') }
it 'removes syllabus from table' do
expect { delete :destroy, id: syllabus.id }.to change { Syllabus.count }.by(-1)
end
end
** 以上代码未经测试,仅作为指南 **
因为你破坏了动作方法没关系,但是,如果你把它留下来,你可以改进一下:
def destroy
@syllabus.destroy
end
这是因为您的 if/else 条件在该方法上作用不大,默认情况下 rails 应该响应 204 no content
我创建了一个 destroy 方法,现在我想知道如何测试和渲染对象是否成功删除。
def destroy
if @syllabus.destroy
render :no_content
else
end
end
我想你正在寻找类似 rspec-rails 的东西, 在 gem 存储库上关注 installation instructions 后,您可以生成一个测试文件:
bundle exec rails generate rspec:controller my_controller
这将生成如下文件:
# spec/controllers/my_controller_spec.rb
require 'rails_helper'
RSpec.describe MyControllerController, type: :controller do
# your code goes here...
end
然后你可以添加一个这样的测试例子:
# spec/controllers/my_controller_spec.rb
require 'rails_helper'
RSpec.describe MyControllerController, type: :controller do
#replace attr1 and attr2 with your own attributes
let(:syllabus) { Syllabus.create(attr1: 'foo', attr2: 'bar') }
it 'removes syllabus from table' do
expect { delete :destroy, id: syllabus.id }.to change { Syllabus.count }.by(-1)
end
end
** 以上代码未经测试,仅作为指南 **
因为你破坏了动作方法没关系,但是,如果你把它留下来,你可以改进一下:
def destroy
@syllabus.destroy
end
这是因为您的 if/else 条件在该方法上作用不大,默认情况下 rails 应该响应 204 no content