NoMethodError: неопределенный метод `symbolize_keys 'в тесте rspec - PullRequest
4 голосов
/ 20 октября 2011

Вот ошибка для обновления в rspec:

  4) CustomersController GET customer page 'update' should be successful
     Failure/Error: post 'update', customer
     NoMethodError:
       undefined method `symbolize_keys' for "1":String
     # ./spec/controllers/customers_controller_spec.rb:38:in `block (3 levels) in <top (required)>'

Код rspec:

it "'update' should be successful" do

  customer = Factory(:customer)      
  post 'update', customer
  response.should be_success
end

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

  def update
    @customer = Customer.find(params[:id])
    if @customer.update_attributes(params[:customer], :as => :roles_new_update)
      if @customer.changed
        @message = 'The following info have been changed\n' + @customer.changes.to_s
        @subject ='Customer info was changed BY' + session[:user_name]
        notify_all_in_sales_eng(@message,@subject)
      end  

      redirect_to session[('page'+session[:page_step].to_s).to_sym], :notice => 'Customer was updated successfaully!'
    else
      render 'edit', :notice => 'Customer was not updated!'
    end
  end

Любоймысли об ошибке?Благодаря.

1 Ответ

9 голосов
/ 07 ноября 2011

Я не буду вдаваться в подробности о RSpec, но я только что встретил ту же ошибку, и вот как я бы исправил ее для вашего кода:

it "'update' should be successful" do
  customer = Factory(:customer)      
  post 'update', :id => customer.id
  response.should be_success
end

Я думаю, что вы не можете предоставить свой объект напрямуюметоду post, вы должны передать его id как Hash.

(Обратите внимание, что этот код предполагает, что ваш клиент существует в тестовой базе данных, поэтому ваш Factory должен create это.)

...