[英]Stubbing controller actions in RSpec request specs
我正在為服務器錯誤編寫API測試用例。 我想對控制器操作進行存根以引發錯誤以模擬服務器錯誤(500)。 在請求規范中,未設置controller
變量。
it "Should return 500 upon server error" do
controller.stub(:index).and_raise(ArgumentError)
get "/users.json"
response.code.should eq("500")
end
我最終使用any_instance
對控制器方法進行了存根any_instance
。
it "Should return 500 upon server error" do
UsersController.any_instance.stub(:index).and_raise(ArgumentError)
get "/users.json"
response.code.should eq("500")
response.body.should have_json_path("error")
end
注意:
在請求規范中存根控制器方法沒有任何意義。 但是...在這種情況下,我使用請求規范套件作為接受標准。 要求之一是確保所有錯誤代碼和消息均與API設計匹配。我能夠誘使服務器引發API設計中指定的所有HTTP錯誤代碼。 唯一的例外是internal server error(ie 500)
。 我沒有辦法誘導控制器引發此錯誤。 由於我正在測試錯誤回復,並且由於此回復與異常的位置和來源無關,所以我決定將其存根。
它實際上是一個實例變量: @controller
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.