Тесты Rspec не могут показать успешные ситуации - PullRequest
0 голосов
/ 28 марта 2012

У меня есть следующие тесты Rspec, которые проверяют, может ли пользователь успешно обновить поиск мусора.Я знаю, что сайт позволит пользователю делать это, но моя проблема в том, что мои тесты не фиксируют это.Каждый раз, когда я запускаю rspec, все приведенные ниже тесты не проходят.Я надеюсь, что есть только одна простая вещь, которую я забыл вставить туда, но мои глаза омрачены, когда весь код работает вместе.Когда вы смотрите на эти тесты, что-то кажется вам неправильным?

describe "PUT 'update'" 

  before(:each) do
     @hunt = FactoryGirl.create(:hunt)
  end
.... 
  describe "as an admin user" do   
    before(:each) do
    admin = FactoryGirl.create(:user, :email => "admin@example.com", :admin => true)
    test_sign_in(admin)
  end   
....
  describe "success" do

        before(:each) do
          @attr = { :name => "New Hunt" }
        end         

        it "returns http success" do
          get 'edit', :id =>  @hunt
          response.should be_success
        end

        it "should change the hunt's name" do
          put :update, :id => @hunt, :name => @attr
          @hunt.reload
          @hunt.name.should  == @attr[:name]
        end

        it "should redirect to the hunt show page" do
          put :update, :id => @hunt
          response.should redirect_to(@hunt)
        end

        it "should have a flash message" do
          put :update, :id => @hunt, :user => @attr
          flash[:success].should =~ /updated/
        end
      end 
    ...
 end

Вот код моего контроллера.

  def edit
    @hunt = Hunt.find(params[:id])
    @title = "Edit hunt"
  end

  def update
    @hunt = Hunt.find(params[:id])
    if @hunt.update_attributes(params[:hunt])
      flash[:success] = "Hunt updated."
      redirect_to hunts_path
    else
      @title = "Edit Hunt"
      render 'edit'
    end
  end

А вот обратная связь, которую я получаю из Rspec.Это все по всем направлениям, но я надеюсь, что это вызвано одной проблемой, а не четырьмя отдельными.

   1) HuntsController PUT 'update' as an admin user failure should render the 'edit' page
       Failure/Error: response.should render_template('edit')
         expecting <"edit"> but rendering with <"">
       # ./spec/controllers/hunts_controller_spec.rb:220:in `block (5 levels) in <top (required)>'

    2) HuntsController PUT 'update' as an admin user failure should have the right title
       Failure/Error: response.should have_selector("title", :content => "Edit hunt")
         expected following output to contain a <title>Edit hunt</title> tag:
         <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
         <html><body>You are being <a href="http://test.host/hunts">redirected</a>.</body></html>
       # ./spec/controllers/hunts_controller_spec.rb:226:in `block (5 levels) in <top (required)>'

    3) HuntsController PUT 'update' as an admin user success should change the hunt's name
       Failure/Error: @hunt.name.should  == @attr[:name]
         expected: "New Hunt"
              got: "Hunt 9" (using ==)
       # ./spec/controllers/hunts_controller_spec.rb:244:in `block (5 levels) in <top (required)>'

    4) HuntsController PUT 'update' as an admin user success should redirect to the hunt show page
       Failure/Error: response.should redirect_to(@hunt)
         Expected response to be a redirect to <http://test.host/hunts/649> but was a redirect to <http://test.host/hunts>
       # ./spec/controllers/hunts_controller_spec.rb:249:in `block (5 levels) in <top (required)>'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...