2013-03-02 137 views
0

在我的Rails應用程序我有各種ItemsInvoice如何使用RSpec單元測試accep_nested_attributes_for?

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 

有人能幫忙嗎?

回答

1

從accepts_nested_attributes_for documentation

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

文件沒有指定他們的意思默默但也可能是未拋出異常....

嘗試建立一些驗證,在項目模型屬性,肯定會拋出一些異常結束應該足夠響亮rspec期望{..}。阻止工作。