0

こんにちは、rspec を使用してユーザー モデルをテストしています。私がやっていることは、テストの一般的な方法であるかどうかを知りたかっただけです。エラーメッセージをテストするために、私はこのようなことをしています

    User.create!(users(:first))
    user.update_attributes  email: 'IDon\'tThinkThisIsAValidEmail' 
    user.should_not be_valid
    assert user.errors.messages.include? :email

また、重複をテストするにはどうすればよいですか? full_messages を呼び出して、「メールは既に取得されています」というメッセージをテストしていますか? これは良い習慣ですか。ユーザー名が無効だったため、should_not be_valid テストに合格する前に、この方法でテストを行っています。私がしていることは良い考えですか?テストのより良い方法はありますか?

4

2 に答える 2

2

一意性の検証を含む、一連の有用なテストアサーションを備えたshouldagemを確認する必要があります。

describe User do
  should validate_uniqueness_of(:email)
end

編集:ここから始めるのに最適な場所としてのドキュメントへのリンクがあります。

于 2013-02-02T20:16:27.677 に答える
1

電子メールの形式を検証するには、次のようなことができます。ほとんどの検証仕様を記述するために、ユーザー レコードを作成したり、フィクスチャを使用したりする必要はありません。

    it "will not allow invalid email addresses" do
      user = User.new(email: 'notAValidEmail')
      user.should have(1).error_on(:email)
    end

    it "will allow valid email addresses" do
      user = User.new(email: 'valid@email.com')
      user.should have(:no).errors_on(:email)
    end

存在を検証するには、これを行うことができます:

    it { should validate_presence_of(:email) }

その他の例については、rspec ドキュメントを参照してください。

https://www.relishapp.com/rspec/rspec-rails/v/2-3/docs/model-specs/errors-on

于 2013-02-02T20:22:18.643 に答える