我想测试一个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