簡體   English   中英

用Rspec測試DELETE請求的最佳方法?

[英]Best way to test DELETE requests with Rspec?

我開始使用這種方式:

  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請求刪除數據的最佳方法。

到目前為止,您的測試正在確保這一點:

  • 刪除之前get請求的響應
  • 獲取請求的狀態碼
  • 刪除請求的響應
  • 刪除請求的狀態碼
  • 刪除后獲取請求的響應
  • 獲取請求的狀態碼

此測試涵蓋的內容比刪除請求要多得多,但我認為還可以。 最好沒有這種測試。

我希望改進此測試的目的是在測試時拆分路由。 我將進行1次測試以確保索引路由按預期運行,並進行1次測試以確保刪除路由正常運行。 這樣,索引路由上的錯誤不會破壞您的刪除規范。 =)

我會有這樣的事情:

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),YAML.load(category2.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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM