0

私のRailsアプリケーションには、InvoiceさまざまなものがありますItems:

class Invoice < ActiveRecord::Base

  attr_accessible :date, :recipient, :items_attributes

  accepts_nested_attributes_for :items, :reject_if => :all_blank, :allow_destroy => true

end

ただし、そのモデルの RSpec 単体テストに苦労しています。たとえば、請求書に項目がない場合にエラーがスローされることをテストしたいと思います。

これは機能しません:

describe Invoice do

  it "is invalid without an item" do
    expect(build(:invoice, :items_attributes => {}).to have(1).errors_on(:items_attributes)
  end

end

誰でも助けることができますか?

4

1 に答える 1

1

accept_nested_attributes_forドキュメントから

You may also set a :reject_if proc to silently ignore any new record hashes if they fail to pass your criteria.

ドキュメンテーションは、それらが何を意味するのかを明示していません、例外をスローしない可能性があります....

間違いなくいくつかの例外をスローする項目モデル属性で、いくつかの検証、プレゼンスを設定してみてください。終了は、rspec が期待するのに十分な大きさでなければなりません{..}.to ブロックが機能します。

于 2013-03-03T00:27:32.230 に答える