flash [: note] .should_not be_nil не удалось в rspec - PullRequest
6 голосов
/ 10 декабря 2011

Вот код rspec для контроллера:

it "should render edit if update was not saved" do
  item = Factory(:lease_item)
  session[:corp_head] = true
  post 'update', {:id => item.id, :name => 'nil'}
  flash[:notice].should_not be_nil
  response.should render 'edit'    
end

Обновление в контроллере:

  def update
    if (eng? && dept_head?) || corp_head? || ceo?
      @lease_item = LeaseItem.find(params[:id])
      @lease_item.input_by_id = session[:user_id]
      if @lease_item.update_attributes(params[:lease_item], :as => :roles_update)

        #redirect
        redirect_to URI.escape("/view_handler?index=0&msg=Lease item updated successfully")
      else
        #back to new
        render 'edit', :notice => "Item NOT updated"
      end
    else
      #back to previous page
      redirect_to URI.escape("/view_handler?index=0&msg=NO right to update lease item")
    end    
  end

Вот код ошибки из rspec:

  1) LeaseItemsController GET 'update' should render edit if update was not saved
     Failure/Error: flash[:notice].should_not be_nil
       expected: not nil
            got: nil

«Элемент НЕ обновлен» ожидался во флэш-памяти.Однако почему нет ничего со вспышкой [: note]?Или как rspec есть сообщение с визуализацией 'edit',: alert => 'Item NOT updated'

Спасибо.

UPDATE:

Вот изменение в контроллере:

      ...........
      else
        #back to new
        flash[:notice] = "Item NOT updated"
        render 'edit'
      end
      .........

Вот код rspec, который передает:

   it "should render edit if update was not saved" do
      item = Factory(:lease_item)
      session[:corp_head] = true
      post 'update', {:id => item.id, :lease_item => {:name => 'nil'}}
      flash.should_not be_nil
      response.should render_template(:action=> "edit")  
    end

Он не работал при использовании flash [: note] .should_not be_nil (или.. flash.now [: извещение] ...).Ошибка Got Nil, которая такая же, как и раньше.Также response.should render 'edit' (или ... render: action => 'edit') также не прошел.Это ошибка NameError или NoMethodError.Не знаю почему.

Ответы [ 2 ]

5 голосов
/ 10 декабря 2011

измените ваше значение на:

else
  #back to new
  flash[:notice] = "Item NOT updated"
  render 'edit'
end
0 голосов
/ 10 декабря 2011

Во-первых, я не вижу, где именно вы установили flash в своем коде.

Что бы ни было, замените:

  post 'update', {:id => item.id, :name => 'nil'}

на:

  post 'update', {:id => item.id, :lease_item => { :name => 'nil' } }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...