Ошибка Rspec - связь между текущим пользователем и другой моделью - PullRequest
0 голосов
/ 25 апреля 2011

Я тестирую свой employee_controller, и в моем тесте индекса для зарегистрированных пользователей я получаю ошибку, которая, по-видимому, связана с моими отношениями модели.

Тест:

describe "for signed-in user" do
  before(:each) do
    @user = test_sign_in(Factory(:user))
  end

  it "should have the right title" do
    get :index
    response.should have_selector('title', :content => "Employee List")
  end

У меня установлен render_views.Я также привязал каждого пользователя к определенному местоположению, и в представлении индекса сотрудника должны отображаться сотрудники для местоположения пользователя.И в моем индексном представлении у меня есть следующий код, чтобы показать имя расположения сотрудников:

<h1>Listing employees for <%= current_user.location.name %> </h1>

Когда я запускаю свой тест, я получаю сообщение об ошибке, содержащее «ActionView :: Template:: Ошибка: неопределенное имя метода для nil: NilClass "

В моем файле factories.rb я установил для идентификатора местоположения пользователя действительный идентификатор.Почему current_user.location возвращает ноль?Чего мне не хватает в тесте?Спасибо!

1 Ответ

2 голосов
/ 25 апреля 2011

Скорее всего, процесс входа в систему некорректен. Вот как я это делаю. У меня есть /spec/support/controller_macros.rb и внутри:

module ControllerMacros
  def login_user
    before(:each) do
      @request.env["devise.mapping"] = :user
      @user = Factory(:user)
      sign_in @user
    end
  end
end

Теперь, в моих спецификациях контроллера:

describe AbilitiesController do
    login_user

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