Может ли разработчик теста sign_in () принять новую запись? - PullRequest
1 голос
/ 26 сентября 2011

В следующем примере я могу использовать build() вместо create()?

class UsersControllerTest < ActionController::TestCase  

  setup do
    @user = Factory.create(:user)
  end

  test "admin can get index" do
    sign_in @user
    get :index
    assert_response :success
  end

  test "user cannot get index" do
    sign_in @user
    get :index
    assert_response 403
  end

end

При реальном использовании пользователь уже был бы создан (сохранен) до входа в систему, поэтому в моем тесте используется create(). Однако я хочу использовать build(), потому что надеюсь, что это ускорит мои тесты.

Устройство README прямо не говорит, что можно использовать build ().

Заранее спасибо за помощь.

1 Ответ

1 голос
/ 27 декабря 2011

Похоже, что запись пользователя должна сохраняться, согласно этой заметке Хосе.

Насмешка никогда не сработает. Когда вы говорите войти, пользователь хранится в сессии (в основном, пользовательский класс и его идентификатор). Когда ты доступ к контроллеру, другой пользовательский объект извлекается на основе сохраненные данные. Лучший способ решить эту проблему - использовать то, что сохраняет объект, как Factory Girl.

https://github.com/plataformatec/devise/issues/928

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