Ошибка при тестировании устройства с omniauth и rspec - PullRequest
0 голосов
/ 14 сентября 2011

Я написал эту простую спецификацию:

  it "redirects to dashboard upon login" do
      user = Factory(:user)
      visit "/users/sign_in

почему я получаю эту ошибку?

Failure/Error: visit "/users/sign_in"
ActionView::Template::Error:
undefined method `user_omniauth_authorize_path' for #<#<Class:0x00000102947cc8>:0x0000010293def8>

мой spec_helper:

OmniAuth.config.test_mode = true
OmniAuth.config.add_mock(:facebook, {:user_info => {:name => "Joe Smith", :nickname => 'joesmith'}, :uid => '123456790'})

и придумать спецификационный помощник:

module DeviseSpecHelper
  RSpec.configure do |config|
    config.include Devise::TestHelpers, :type => :controller
  end

  def login_with_oauth(service = :facebook)
    visit "/auth/#{service}"
  end
end

1 Ответ

0 голосов
/ 22 января 2012

Я получил ту же самую ошибку этим вечером.В моем файле config / initializers / devise.rb у меня были настроены твиттер и фейсбук как для разработки, так и для производства, но у меня ничего не было для тестирования.После настройки некоторых мусорных данных для среды тестирования все заработало.

Это то, что я использую в своем инициализаторе devise.rb, с удалением реальных ключей.

if Rails.env.production?
  config.omniauth :twitter, '7630184729174927491732', 'asdfia8akfuoiafo8uasdfjad;lsfjalsf'
  config.omniauth :facebook, '4759010482048301849821', 'asdfawer82395ahusfi8afier98hakfdha'
else
  config.omniauth :twitter, '1231231231231231231231', 'slakjsdflakhsldiuvalejhiubsdlfkjhasdfjasdl'
  config.omniauth :facebook, '123123123123123', 's4s4aeraw4rert4f4awefa34afw4a4f3'
end
...