Ruby on rails测试不断给我错误

时间:2012-10-30 23:36:32

标签: ruby-on-rails ruby

我正在使用Ruby on Rails创建一个简单的社交网络。我想在注册时为个人资料名称添加某些字符的限制。因此,在我的User.rb文件中,我有以下内容:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me,
                  :first_name, :last_name, :profile_name
  # attr_accessible :title, :body

  validates :first_name, presence: true
  validates :last_name, presence: true

  validates :profile_name, presence: true,
                           uniqueness: true,
                           format: {
                             with: /^[a-zA-Z0-9_-]+$/,
                             message: "must be formatted correctly."
                           }
  has_many :statuses

  def full_name
    first_name + " " + last_name
  end
end

我设置了一个测试来验证它是否有效,这就是测试的结果:

test "user can have a correctly formatted profile name" do
user = User.new(first_name: '******', last_name: '****', email: '********@gmail.com')
user.password = user.password_confirmation = '**********'
user.profile_name = '******'
assert user.valid?

当我运行测试时,我不断收到错误消息,指出我的assert user.valid?行出了问题。所以我想我在with: /^[a-zA-Z0-9_-]+$/中搞砸了一些语法。

我得到的错误是1) Failure: test_user_can_have_a_correctly_formatted_profile_name(UserTest) [test/unit/user_test.rb:40]:

但是在第40行,它有这段代码assert user.valid?

感谢任何帮助:)

1 个答案:

答案 0 :(得分:0)

  

所以我在想我用regexp搞砸了一些语法。

你的语法很好。

但是,您的错误消息清楚地表明您正在使用不匹配的个人资料名称。

您是否在个人资料名称中使用其他字符,例如空格?还是期间?

试试这样:

/^[a-zA-Z0-9_-]+$/.match "foobar" #=> #<MatchData "foobar">

如果数据不匹配,您将获得nil:

/^[a-zA-Z0-9_-]+$/.match "foo bar" #=> nil