ruby-on-rails – 使用Rspec测试DELETE请求的最佳方法?
发布时间:2020-12-17 02:54:35 所属栏目:百科 来源:网络整理
导读:我开始用这种方式: describe "DELETE /v1/categories/{id}" do before(:each) do # Login User/Token end it 'deletes a category' do category = Fabricate(:category) category2 = Fabricate(:category) get "/v1/categories" expect(response.status).to
我开始用这种方式:
describe "DELETE /v1/categories/{id}" do before(:each) do # Login User/Token end it 'deletes a category' do category = Fabricate(:category) category2 = Fabricate(:category) get "/v1/categories" expect(response.status).to eq 200 expect(JSON.parse(response.body)).to eq([YAML.load(category.to_json),YAML.load(category2.to_json),]) delete "/v1/categories/#{category.id}" expect(response.status).to eq 200 get "/v1/categories" expect(JSON.parse(response.body)).to eq([YAML.load(category2.to_json)]) end end 我不确定是否是测试API请求删除数据的最佳方法. 解决方法
到目前为止,您的测试确保:
>删除前获取请求的响应 这个测试比删除请求要多得多,但我认为没问题.最好是进行这种测试然后没有. 我要做的是改进这个测试,那就是在测试时拆分路线. 我会有这样的事情: describe "GET /v1/categories" do before(:each) do # Login User/Token category = Fabricate(:category) category2 = Fabricate(:category) get "/v1/categories" end it 'should return status 200' do expect(response.status).to eq 200 end it 'list all categories' do expect(JSON.parse(response.body)).to eq([YAML.load(category.to_json),]) end end describe "DELETE /v1/categories/:category_id" do before(:each) do # Login User/Token category = Fabricate(:category) category2 = Fabricate(:category) delete "/v1/categories/#{category.id}" end it 'should return status 200' do expect(response.status).to eq 200 end it 'should delete the category' do expect(Category.all).to eq category2 end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |