Как заставить сбой просмотра в rspec? - PullRequest
4 голосов
/ 01 мая 2011

У меня очевидная ошибка в моем приложении на 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.Тест проходит независимо от того, что я положил туда.И это скопировано из сгенерированного кода ... какие-либо мысли по этому поводу?

1 Ответ

0 голосов
/ 02 мая 2011

Могу поспорить, что это связано с миграциями, не запущенными на тестовой базе данных.Если вы запустите

rake spec

, миграция будет запущена для вас (http://www.ruby -forum.com / topic / 170171 ).Если вы запустите

rspec spec 

, они не будут запускаться автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...