我想測試一個JSON API端點,並且由於user.find
的調用失敗,我得到一個ActiveRecord::RecordNotFound
異常。如何使用RSpec模擬數據庫調用
我該如何模擬我的測試的活動記錄調用,以便返回一些內容並且不會引發異常?
(我用factory_girl此外,如果我可以使用)
def do_something
success = false
message = ""
user = User.find(params[:user_id])
if user.present?
# ...
if user.save!
success = true
end
end
render json: {
"success": success,
"message": message
}
end
我的RSpec的樣子:
#RSpec.describe Api::UsersController, type: :controller do
it "should return some JSON" do
payload = {
user_id: "1",
# ...
}.to_json
post :do_something, payload, format: :json
expected = {
success: false,
message: ""
}.to_json
expect(response.body).to eq(expected)
end
你是什麼意思,我不實際使用AR? – Blankman
哦,對不起,我忘了你正在寫軌道應用程序的規格。其實我需要在開發一個'ruby gem'的同時嘲笑db。對不起,我會更新我的答案。 – Sinscary