如何确认对象是否在 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