2015-05-05 49 views
0

我試圖使用Rspec來測試模型。該User模型方法,將角色分配給它:如何爲重複的電子郵件創建Rails測試

after_initialize :set_default_role, :if => :new_record? 

def set_default_role 
    self.role ||= :admin 
end 

我怎麼會爲它編寫一個測試?請注意,我是Mongoid和Mongoid :: Enum(角色是一個枚舉字段)

回答

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

我想這將測試一個簡單的例子,如果一個新用戶在初始化時被分配字符串值'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 
相關問題