带有shoulda gem的rails rspec

时间:2013-02-26 10:13:42

标签: ruby-on-rails rspec

我有这个管理员模型测试,我得到了这个结果和错误。问题是什么,如何修复它 的 admin_user_spec.rb

require 'spec_helper'

describe AdminUser do

  it { should allow_mass_assignment_of(:email) }
  it { should allow_mass_assignment_of(:password) }
  it { should allow_mass_assignment_of(:password_confirmation) }
  it { should allow_mass_assignment_of(:remember_me) }

end

结果:

1) AdminUser 
     Failure/Error: it { should allow_mass_assignment_of(:password) }
     NoMethodError:
       undefined method `allow_mass_assignment_of' for #<RSpec::Core::ExampleGroup::Nested_1:0x007f8d58d5d3a0>
     # ./spec/models/admin_user_spec.rb:6:in `block (2 levels) in <top (required)>'

AdminUser.rb

class AdminUser < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable, :lockable and :timeoutable
  devise :database_authenticatable, :trackable

  # :timeoutable, :lockable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me

#  after_create { |admin| admin.send_reset_password_instructions }

  # def password_required?
  #   new_record? ? false : super
  # end

end

3 个答案:

答案 0 :(得分:0)

试试......

require 'spec_helper'

describe AdminUser do

  it { should allow_mass_assignment_of(:email) }
  it { should allow_mass_assignment_of(:password).as(:admin) }
  it { should allow_mass_assignment_of(:password_confirmation) }
  it { should allow_mass_assignment_of(:remember_me) }

end

答案 1 :(得分:0)

尝试添加

require 'shoulda-matchers'
require 'shoulda/matchers/integrations/rspec'

位于spec_helper.rb

的顶部

答案 2 :(得分:0)

我添加了

require 'shoulda/integrations/rspec2'

以上

require 'rspec/rails'

spec_helper.rb 中,问题已解决