如何为重复的电子邮件创建Rails测试

时间:2015-05-05 15:34:59

标签: ruby-on-rails ruby-on-rails-4 rspec enums

我正在尝试使用Rspec来测试模型。 User模型具有为其分配角色的方法:

after_initialize :set_default_role, :if => :new_record?

def set_default_role
  self.role ||= :admin
end

我怎么能为它写一个测试?请注意我是Mongoid和Mongoid :: Enum(角色是枚举字段)

2 个答案:

答案 0 :(得分:1)

以下是两个规格,用于确保在初始化时分配。

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

答案 1 :(得分:1)

我认为这将测试一个简单的案例,即是否为新用户分配了字符串值' 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