0

User モデルに次の検証があります。

  validates :name, :format => {
    :with    => /^[a-zA-Z]+$/,
    :message => 'Only letters allowed.'
  }

そして、ここに私のテストがあります:

  test 'name must consist of letters only' do
    user = User.new(:name => 'test123')
    assert user.errors[:name].any?
  end

テストは常に失敗します。私は何を間違っていますか?xD

4

2 に答える 2

2

あなたの主張はそれがあるべきものの反対です。アサーションの条件を反転します。

これを試して

test 'name must consist of letters only' do
  user = User.new(:name => 'test123')
  assert !user.valid?
end

また、validates_format_of代わりに使用してみてくださいvalidate

validates_format_of :name, :with    => /^[a-zA-Z]+$/, :message => 'Only letters allowed.'
于 2013-03-10T14:48:36.487 に答える
0

私の問題が何であるかを
突き止めました。上記のコマンドは実際にエラーを生成し、その後アクセスできました。 最終結果: user.valid?user.invalid?user.saveuser.errors

  validates_format_of :name, :with => /^[a-zA-Z]+$/, :message => 'Only letters allowed'

  test 'name must consist of letters only' do
    user = User.new(:name => 'test123')
    user.save
    assert user.errors[:name].any?
  end
于 2013-03-10T16:23:12.167 に答える