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

来自 Accepts_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 expect{..}.to 阻止工作。

于 2013-03-03T00:27:32.230 回答