0

アサーションが失敗する単体テストを作成しました。モデルのすべての属性を検査することなく、その理由を見つけたいと思います。

これが私のテストです:

test "a correct document should be saved" do
  document = documents(:one)
  document.pdf = File.new("test/files/document_test_file.pdf")
  assert document.save
end

そして、ここにフィクスチャがあります:

one:
  user_id: 1
  title: MyString
  published_on: 2012-12-06
  tags: MyText
  language: MyString

どうやら、何かが足りないため、ドキュメントを保存できません。しかし、何が欠けているのかを正確に知るにはどうすればよいでしょうか。これを行うための高度なアサーション方法はありますか?

そして私のモデル:

class Document < ActiveRecord::Base
  attr_accessible :language, :pdf, :pdf_file_name, :published_on, :tags, :title, :user_id

  # Validations
  validates_presence_of :language, :published_on, :tags, :title, :user
  validates_date :published_on, on_or_before: Date.current,
                                on_or_before_message: "must be today or earlier"
  validates :user_id, numericality: { only_integer: true, greater_than: 0 }
  validates :pdf, attachment_presence: true

  # Relations
  belongs_to :user

  # Paperclip
  has_attached_file :pdf
end
4

2 に答える 2

3

save失敗の理由を見つける簡単な方法は、save!代わりに呼び出すことです。例外は十分な情報を提供します。

もう 1 つの方法は、 を呼び出しvalid?てから putすることerrorsです。

于 2012-12-07T20:59:07.667 に答える
1

どうですか:

assert document.save, document.errors.full_messages.join(" ")
于 2012-12-07T20:58:45.623 に答える