У меня очевидная ошибка в моем приложении на Rails 3.Я был в процессе изменения имени поля с "addr1" на "адрес" (в моей модели "агентства").Поэтому, естественно, когда я пытаюсь открыть страницу редактирования, я получаю следующую ошибку:
undefined method `addr1' for #<Agency:0x00000100ebd0b0>
вокруг строки 20 ...
18: <div class="field">
19: <%= f.label :addr1 %><br />
20: <%= f.text_field :addr1 %>
21: </div>
Легко исправить, но я хочу написатьтест rspec, который продемонстрирует ту же ошибку (на случай, если я когда-нибудь снова ее введу).Я перепробовал ряд тестов.Например, в моей спецификации / views / agencies / edit.html.erb_spec.rb у меня сейчас есть ...
require 'spec_helper'
describe "agencies/edit.html.erb" do
it "renders the complete form" do
assign(:agency, Factory(:agency, :name => "pat"))
render # agencies/edit
rendered.should match(/pat/)
rendered.should match(/Editing agency/)
assert_select "form", :action => agencies_path(@agency), :method => "post" do
assert_select "input#agency_name", :name => "agency[name]"
assert_select "input#agency_addr1", :name => "agency[name]"
end
puts rendered.to_s
end
end
Но проблема в том, что она проходит!Это НЕ вызывает ту же проблему, что я получаю через браузер.И я специально оставил «addr1» ... удаление его, конечно, проходит.Я надеялся, что самый первый рендер потерпит неудачу.Путс показывает ...
<div class="field">
<label for="agency_addr1">Addr1</label><br />
<input id="agency_addr1" name="agency[addr1]" size="30" type="text" />
</div>
Есть идеи, как написать спецификацию, которая показывает мне, что страница действительно отображается правильно?
спасибо
pat
PS.В процессе изучения этого я понял, что: name => "agency [name]" ничего не делает в assert_select.Тест проходит независимо от того, что я положил туда.И это скопировано из сгенерированного кода ... какие-либо мысли по этому поводу?