Как проводить интеграционное тестирование с помощью RSpec и Devise / CanCan?

Если у меня есть пользователь модели Devise, из которого только пользователи с ролью: admin могут просматривать определенный URL-адрес, как я могу написать интеграционный тест RSpec, чтобы проверить, что статус возвращает 200 для этого URL?

def login(user)
  post user_session_path, :email => user.email, :password => 'password'
end

Это было псевдо предложено в ответе на этот вопрос: Отключение аутентификации в спецификации запроса , но я могу » Я хоть убей заставлю его работать с devise. CanCan получает nil User при проверке способности, которая, естественно, не имеет необходимых разрешений.

В спецификациях интеграции нет доступа к контроллеру, поэтому я не могу заглушить current_user, но я хотел бы что-то сделать вот так.

describe "GET /users" do
  it "should be able to get" do
    clear_users_and_add_admin #does what it says...
    login(admin)
    get users_path
    response.status.should be(200)
  end
end

ПРИМЕЧАНИЕ !!! : все это изменилось с тех пор, как был задан вопрос. На данный момент лучший способ сделать это здесь: http://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara

36
задан Community 23 May 2017 в 12:10
поделиться