视图规范中的模拟协会

时间:2014-04-26 14:28:36

标签: ruby-on-rails unit-testing ruby-on-rails-4 rspec

我正在为具有嵌套属性的表单编写视图规范。我计划此表单包含相关模型的字段。我用mock_model模拟了一个主模型。现在,我需要存根关联才能为它构建字段。我该如何实现呢?我想象下面的代码:

describe 'hotels/new.html.erb' do

  before(:each) do
    assign(:hotel, mock_model('Hotel').as_new_record.as_null_object)
    # I feel something missing here
  end

  it 'has room price field'
    # Association - Room will belong to hotel
    render
    expect(rendered).to have_field 'hotel_room_attributes_0_price'
  end
end

在hotels / new.html.erb中,我有一个包含字段的表单:

<%= form_for @hotel do |f| %>
  <%= f.fields_for :room do |r| %>
    <%= r.text_field :price %>
  <% end %>
<% end %>

如何将此关联存根以便能够呈现其字段?

1 个答案:

答案 0 :(得分:0)

如下所示创建存根:

hotel.stub(:rooms).and_return(whatever_you_want_returned)

您可以返回虚假或实际模型,但是and_return部分是可选的。如果您想为酒店的所有实例存储此方法,请执行以下操作:

Hotel.any_instance.stub(:rooms)