如何为重复的电子邮件创建 Rails 测试
How to create a Rails test for duplicate email
我正在尝试使用 Rspec 来测试模型。 User
模型具有为其分配角色的方法:
after_initialize :set_default_role, :if => :new_record?
def set_default_role
self.role ||= :admin
end
我如何为它编写测试?请注意,我是 Mongoid 和 Mongoid::Enum(角色是一个枚举字段)
这里有两个规范,用于确保在初始化时分配它。
context "role" do
let(:bob) { User.new }
let(:alice) { User.new(role: :manager) }
it "assigns default role" do
expect(bob.role).to eq(:admin)
end
it "doesn't override role" do
expect(alice.role).to eq(:manager)
end
end
您也可以use the default
option指定默认值:role
。
enum :role, [:manager, :admin], default: :admin
我认为这将测试一个简单的案例,即在初始化时是否为新用户分配了字符串值 'admin'。
it 'is assigned default role' do
expect(User.new(:valid_params).role).to eq 'admin'
end
如果你想测试它在创建后是否持久化,你可以这样做
it 'is assigned default role' do
User.create(:valid_params)
expect(User.first.role).to eq 'admin'
end
我正在尝试使用 Rspec 来测试模型。 User
模型具有为其分配角色的方法:
after_initialize :set_default_role, :if => :new_record?
def set_default_role
self.role ||= :admin
end
我如何为它编写测试?请注意,我是 Mongoid 和 Mongoid::Enum(角色是一个枚举字段)
这里有两个规范,用于确保在初始化时分配它。
context "role" do
let(:bob) { User.new }
let(:alice) { User.new(role: :manager) }
it "assigns default role" do
expect(bob.role).to eq(:admin)
end
it "doesn't override role" do
expect(alice.role).to eq(:manager)
end
end
您也可以use the default
option指定默认值:role
。
enum :role, [:manager, :admin], default: :admin
我认为这将测试一个简单的案例,即在初始化时是否为新用户分配了字符串值 'admin'。
it 'is assigned default role' do
expect(User.new(:valid_params).role).to eq 'admin'
end
如果你想测试它在创建后是否持久化,你可以这样做
it 'is assigned default role' do
User.create(:valid_params)
expect(User.first.role).to eq 'admin'
end