Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何为重复电子邮件创建Rails测试_Ruby On Rails_Ruby On Rails 4_Rspec_Enums - Fatal编程技术网

Ruby on rails 如何为重复电子邮件创建Rails测试

Ruby on rails 如何为重复电子邮件创建Rails测试,ruby-on-rails,ruby-on-rails-4,rspec,enums,Ruby On Rails,Ruby On Rails 4,Rspec,Enums,我正在尝试使用Rspec测试一个模型。用户模型具有将为其分配角色的方法: after_initialize :set_default_role, :if => :new_record? def set_default_role self.role ||= :admin end 我怎样才能为它写一个测试呢?请注意,我是Mongoid和Mongoid::Enum(角色是一个Enum字段)这里有两个规范,用于确保在初始化时分配该字段 context "role" do let(:

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

after_initialize :set_default_role, :if => :new_record?

def set_default_role
  self.role ||= :admin
end

我怎样才能为它写一个测试呢?请注意,我是Mongoid和Mongoid::Enum(角色是一个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

您还可以指定
: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