Как исправить эту ошибку RSpec с Mongoid? "не могу преобразовать символ в целое число" - PullRequest
1 голос
/ 20 апреля 2011

Я пишу тесты для моего контроллера.Они очень просты, но эта ошибка продолжала появляться.Это мой контроллер

  def show
    id=params[:id]
    @user=User.find(:first,id)
  end

Мой тест

  before(:each) do
    @user = Fabricate(:user)
    sign_in @user
  end
  ...
  it "should be successful" do
    get "show", :id => @user
    response.should be_success
  end

И сообщение об ошибке

  1) UsersController GET 'show' for the logged in user should be successful
     Failure/Error: get "show", :id => @user
     TypeError:
       can't convert Symbol into Integer
     # ./app/controllers/users_controller.rb:6:in `show'
     # ./spec/controllers/users_controller_spec.rb:31:in `block (4 levels) in <top (required)>'

Ответы [ 2 ]

0 голосов
/ 20 апреля 2011

ваш контроллер, где ошибка. Метод find автоматически возвращает только первый результат (в коде он эквивалентен User.where(:id => params[:id]).first). Попробуйте удалить первый символ и просто передать идентификатор (User.find(id))

0 голосов
/ 20 апреля 2011

get "show", :id => @user

Вероятно, ваша проблема здесь с @user, значение которого в контексте вашей спецификации неясно из примера, который вы опубликовали. Вы должны передать целочисленный идентификатор записи в качестве значения аргумента params для получения , например :id => 1.

...