Вопрос

В настоящее время я пытаюсь избавиться от вспомогательного метода моего приложения Sinatra из огурца .

У меня есть приложение Sinatra с простой аутентификацией сеанса (по файлам cookie), и я хочу отключить аутентификацию, отключив вспомогательный метод logged_in? для моего Сценарии огурца . С Синатрой и Огуреком, похоже, возникла проблема с сессиями, поэтому я подумал о том, чтобы просто использовать Мокко для решения этой проблемы.

Однако я не знаю, как получить доступ к экземпляру Sinatra :: Application из Given -Block, чтобы заглушить метод.

Это было полезно?

Решение

Вы можете получить правильный контекст, используя Sinatra :: Application.class_eval

Изменить: полный ответ см. в оригинальном ответе автора.

Другие советы

Похоже, мне нужно напрямую переопределить механизм аутентификации внутри Before do ... end -block

Итак, я получил hooks.rb , помещенный в файл features / support / , перезаписывая мои logged_in? и current_user метод.

Before do
  MySinatraApplicationClass.class_eval do
    helpers do
      def logged_in?
        return true
      end
      def current_user
        # This returns a certain Username usually stored 
        # in the session, returning it like
        # that prohibits different user logins, but for
        # now this is enough for me
        "Walter"
      end
    end
  end
end

Единственное, о чем мне нужно было позаботиться, это то, что никакие другие действия внутри приложения не читаются напрямую из session , а скорее используют этих помощников.

К сожалению, я думаю, что этот способ обработки основанных на сеансах приложений Sinatra с помощью Cucumber уже описан где-то еще, и я просто подумал, моя проблема была другой .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top