Я пытаюсь сделать несколько тестов на огурец у omniauth при работе Facebook.
В настоящее время я получаю следующую ошибку:
Given I am not logged in # features/step_definitions/user_steps.rb:79
When I go to the homepage # features/step_definitions/web_steps.rb:51
And I follow "Sign in" # features/step_definitions/web_steps.rb:61
Then I should see "Facebook" # features/step_definitions/web_steps.rb:110
When I sign in with facebook # features/step_definitions/omniauth_steps.rb:1
undefined method `[]=' for nil:NilClass (NoMethodError)
(eval):2:in `click_link'
./features/step_definitions/web_steps.rb:62:in `/^(?:|I )follow "([^"]*)"$/'
features/users/login_with_facebook.feature:14:in `When I sign in with facebook'
Then I should be signed in # features/step_definitions/user_steps.rb:60
У меня есть следующий файл omniauth_steps.rb
Given /^I sign in with facebook$/ do
step %{I follow "Facebook"}
end
И support / omniauth.rb
Before('@omniauth_test') do
OmniAuth.config.test_mode = true
p "OmniAuth.config.test_mode is #{OmniAuth.config.test_mode}"
OmniAuth.config.mock_auth[:facebook] = {
:provider => 'facebook',
:uid => '1234567',
:info => {
:nickname => 'jbloggs',
:email => 'joe@bloggs.com',
:name => 'Joe Bloggs',
:first_name => 'Joe',
:last_name => 'Bloggs',
},
:credentials => {
:token => 'ABCDEF...', # OAuth 2.0 access_token, which you may wish to store
:expires_at => 1321747205, # when the access token expires (if it expires)
:expires => true # if you request `offline_access` this will be false
},
:extra => {
:raw_info => {
:id => '1234567',
:name => 'Joe Bloggs',
:first_name => 'Joe',
:last_name => 'Bloggs',
:username => 'jbloggs',
:email => 'joe@bloggs.com',
}
}
}
end
After('@omniauth_test') do
OmniAuth.config.test_mode = false
end
Когда я делаю ручные тесты, все работает, так что я рад, что моя конфигурация в порядке, это просто ремень и брекеты. Сообщение об ошибке не слишком информативно, поэтому я надеюсь, что кто-то может остановить очевидный недостаток! Я использую последние версии для rails, devise, omniauth и omniauth-facebook.
Редактировать
Глядя на логи, я вижу это в журнале разработки:
Started GET "/users/auth/facebook" for 127.0.0.1 at 2012-02-22 14:52:16 +0100
Processing by Users::SessionsController#setup as HTML
Rendered text template (0.0ms)
Completed 404 Not Found in 2ms (Views: 0.6ms | ActiveRecord: 0.2ms)
Started GET "/users/auth/facebook/callback?code=AQ<snip>IE" for 127.0.0.1 at 2012-02-22 14:52:18 +0100
Processing by Users::SessionsController#setup as HTML
Журнал испытаний отличается, я получаю два 404. Первый законен (я использую пользовательскую настройку Omniauth), а второй снова вызывает «users / auth / facebook» вместо «/ users / auth / facebook / callback»