0

私のuser.rbモデルには、次のものがあります。

validates :email, presence: true, 
                  format: { with: VALID_EMAIL_REGEX },
                  uniqueness: { case_sensitive: false }

そして、私は次のテストを行っています:

test "email address uniqueness regardless of case" do
    dup_user = User.new(name: "First Last", email: @user.email.upcase)
    dup_user.save
    assert !@user.valid?
end

そして、そのテストは合格しません。assert !@user.save.valid?保存に失敗するのではないかと思って試してみましたが、うまくいきませんでした。

私は何が間違っているのですか?

4

2 に答える 2

3

が有効かどうかを確認する必要がdup_userあります。

test "email address uniqueness regardless of case" do
    dup_user = User.new(name: "First Last", email: @user.email.upcase)
    assert ! dup_user.valid?
end
于 2012-06-18T21:53:28.230 に答える
2

これが私がやったことです:

私のuser.rbモデルには、次のものがあります。

 validates :email, presence: true, 
                      format: { with: VALID_EMAIL_REGEX },
                      uniqueness: { case_sensitive: false }

そして、私は次のテストとセットアップを持っています:

def setup
    @user = User.new(name: "John Doe", email: "example@example.com",
             password: "foobar", password_confirmation: "foobar")
    @user.save 
end

test "email address uniqueness regardless of case" do
  dup_user = User.new(name: "First Last", email: @user.email.upcase)
  assert !dup_user.save
end

要するに、私が行っていたのは、保存部分ではなく、trueとして評価されるユーザーオブジェクトを渡すことです。object.save.validを実行する場合は?保存が有効かどうかを尋ねるのではなく、object.saveが有効なオブジェクトを返しました。object.saveから返されるのはfalseです(オブジェクトではありません)。

于 2012-06-18T21:46:19.447 に答える