2

После клонирования последних стабильных версийКак получить рассказы для работы с restful_authentication и огурцом?

в применении чистых рельсах, и следующее (что я считаю, являются) все инструкции для каждого плагина, огуречные истории до сих пор не удается :-(. Вот краткое описание проблемы:

  1. переадресовывает не работают сразу же, несмотря создав «map.root: контроллер =>„my_controller“» маршрут:
     
    expected redirect to "/", got no redirect (Spec::Expectations::ExpectationNotMetError) 
    /cygdrive/c/development/test/vendor/plugins/rspec/lib/spec/expectations.rb:57:in `fail_with' 
    /cygdrive/c/development/test/vendor/plugins/rspec/lib/spec/expectations/handler.rb:14:in `handle_matcher' 
    /cygdrive/c/development/test/vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb:31:in `should'. 
    /features/step_definitions/user_steps.rb:111:in `/^an? (.*) user named '(.*)'$/' 
    features/sessions.feature:25:in `And an activated user named 'reggie'' 
    
  2. история говорит logged_in? метод защищен, несмотря на то, что файл features/step_definitions/ra_env.rb вызван:
    ApplicationController.send(:public, :logged\_in?, :current\_user, :authorized?)
    Не делает ли этот вызов эти методы доступными без необходимости обрезания?

О, и я пытаюсь запустить Autospec, так что я сделал следующие команды, чтобы получить его начала:

 
export AUTOFEATURE=true 
rake spec:server:start 
ruby script/autospec 
+0

К сожалению, нижеприведенный ответ был не очень полезным ... любой шанс, который кто-то понимает, почему, по крайней мере, появляются ошибки защищенных методов? – btelles

ответ

2

Я сделал некоторые исследования, и вот что я получил. ra_response_steps.rb ожидают, что перенаправление будет грубым, а затем рассказ, чтобы определить, нужно ли перенаправить перенаправление или нет. Это не удается, потому что реализация Webrat Session имеет следующий код:

 
    def request_page(url, http_method, data) #:nodoc: 
     h = headers 
     h['HTTP_REFERER'] = @current_url if @current_url 

     debug_log "REQUESTING PAGE: #{http_method.to_s.upcase} #{url} with #{data.inspect} and HTTP headers #{h.inspect}" 
     if h.empty? 
     send "#{http_method}", url, data || {} 
     else 
     send "#{http_method}", url, data || {}, h 
     end 

     save_and_open_page if exception_caught? && Webrat.configuration.open_error_files? 
     raise PageLoadError.new("Page load was not successful (Code: #{response_code.inspect}):\n#{formatted_error}") unless success_code? 

     reset 

     @current_url = url 
     @http_method = http_method 
     @data   = data 

     if internal_redirect? 
     check_for_infinite_redirects 
     request_page(response_location, :get, {}) 
     end 

     return response 
    end 

Обратите внимание на if internal_redirect? ... end. Это, если это то, что делает наши тесты неудачными, потому что webrat выполняет перенаправления. Как обходной путь, вы можете прокомментировать эти строки на своей сессии в Webrat, но это, вероятно, не достойное решение. Я немного поработаю и опубликую патч.

+0

Отлично Хьюго! Спасибо! Это решило переадресацию части проблемы. – btelles

0

У меня нет много указаний, чтобы предложить, только сочувствие. Недавно я провел несколько часов с той же проблемой. С другой стороны, я узнал RSpec.

Одна вещь, которую я нашел, - это то, что многие неудачи были вещами, которые я хотел изменить в любом случае - например, я не хотел перенаправлять на «/» при входе в систему, но где-то еще.

В конце концов, большинство неудач были просты в установке, как только я понял, где искать.

+1

Ха-ха ...Спасибо за сочувствие. К сожалению, я более медленный ученик, чем вы, и я провел последние три дня, пытаясь понять все это ... возможно, полный ночной сон не повредит. :-) – btelles

0

Я работаю над тем же самым вопросом. Я еще не там, но я думаю, что ApplicationController.send (: public,: logged_in ?,: current_user,: авторизованный?) Должен идти в support/env.rb.

1

я должен был изменить определение функции выхода из системы в user_steps.rb для:

четкости log_out
    получить '/ выхода из системы'
конец

Прежде чем он пытается получить "/session/destroy ', который существует только в том случае, если вы не удаляете маршруты по умолчанию.

Кроме того, убедитесь, что вы включили AuthenticatedSystem в application_controller.

Все еще борется с некоторыми из других вопросов, хотя ...

1

Что касается проблемы «Защищенный метод», я выяснил, что если я не использую autospec и не оставляю config.cache_classes = true, тогда тесты проходят.

Включение config.cache_classes = false снова вводит ошибку.

Похоже, что проблема заключается в том, как реализовано кэширование классов в рельсах или как rspec управляет создаваемыми классами. К сожалению, у меня нет ресурсов для исследования этого целого журнала больше, и, похоже, есть хорошее обсуждение о нем, которое происходит по адресу: http://groups.google.com/group/rspec/browse_thread/thread/500ede090bd08996/25a3d9a7d283696b?lnk=gst&q=cache_classes#25a3d9a7d283696b

0

Я также получаю некоторые из упомянутых ошибок. Но первая проблема встречающаяся в моем приложении это:

Несколько определений шага имеет один и то же Regexp:

функция/step_definitions/user_steps.rb: 16: (. *) В /^(.*) (.*) user named '(.*)'$/' features/step_definitions/user_steps.rb:29:in/^ нет никакого имени пользователя '(. *)' $ /»

(Огурцы :: избыточность)

Конечно, я могу это исправить, но многие другие ошибки будут следовать (в том числе защищенного logged_in? методы на контроллере, отказавшие RSpec и т. Д.).

Кто-нибудь знает, действительно ли все мы делаем что-то принципиально неправильное здесь? Или это просто, что restful_authentication нарушена в текущей версии?

2

Я нашел этот пост в блоге, что объясняет суть вопроса хорошо:

http://blog.andrew.premdas.org/articles/2008/10/15/webrat-visits-and-redirects

в основном, успокоительные тесты аутентификации пытаются проверить то, что не должно быть проверено с помощью Webrat. Таким образом, изменение, рекомендованное выше, противоположно тому, что, я думаю, вероятно, нужно изменить.

Я изменил тесты проверки подлинности, чтобы они не тестировали перенаправления, а просто проверяли, на какой странице вы заканчиваете. Тем не менее, по-прежнему, как представляется, проблема с некоторыми переадресовывает, что я не понимаю:

Then she should be at the new session page      # features/step_definitions/ra_response_steps.rb:15 
    expected "session/new", got redirected to "http://www.example.com/session/new" (Spec::Expectations::ExpectationNotMetError) 

Я не понимаю, где это example.com откуда. кто-то другой имеет подобную ошибку?

+0

Я считаю, что эта ссылка мертва –

Смежные вопросы