您好我正在使用ruby-2.5.0和Rails 5处理rails应用程序。我必须测试我的forgot_password控制器,有一种方法可以验证电子邮件ID是否在数据库中存在。
MyObject.create({
id: 1,
name: "object_1",
...
buttons: [
{
name: "OK",
action: "Accept"
},
{
name: "No",
action: "Cancel"
}
]
});
我想测试我的api。我已经编写了如下单元测试: -
| obj_id | prop | type | value |
| 1 | id | int | 1 |
| 1 | name | str | object_1 |
...
| 2 | id | int | 2 |
| 2 | name | str | object_2 |
现在我想用'let'创建测试数据 喜欢
forgot_password_controller.rb
# frozen_string_literal: true
class ForgotPasswordController < ApplicationController
def create
user = User.find_by_email(forgot_password_params[:email])
unless user.blank?
render json: {}, status: 200
else
render json: {}, status: 404
end
rescue StandardError
render json: {}, status: 500
end
private
def forgot_password_params
permitted = %i[email]
params.require(:data)
.require(:attributes)
.permit(permitted)
.transform_keys(&:underscore)
end
end
如何创建用户请让我帮帮忙。提前谢谢。
答案 0 :(得分:1)
我会考虑使用FactoryBot aka FactoryGirl,因为它可以更轻松地编写这些内容。但对于你的情况,这应该是你想要的:
let(:user) { User.create!(email: 'xyz@gmail.com', password: 'pass', password_confirmation: 'pass') }
如果您有FactoryBot,可以使用以下方法简化:
let(:user) { create(:user) }
或者为了获得更好的性能,如果您实际上不需要创建记录但只是简单地构建:
let(:user) { build_stubbed(:user) }