質問

現在、 Cucumber 内から Sinatra アプリのヘルパーメソッドをスタブするのに苦労しています。

単純なセッション認証(Cookieによる)を備えた Sinatra アプリを使用しており、 logged_in?ヘルパーメソッドをスタブして認証を無効にしたいキュウリシナリオ。 セッションに関してSinatraとCucumberに問題があるようです。そのため、問題を回避するためにMochaを使用することを考えました。

ただし、 Given -Block内から Sinatra :: Application インスタンスにアクセスしてメソッドをスタブ化する方法はわかりません。

役に立ちましたか?

解決

Sinatra :: Application.class_eval

を使用して、適切なコンテキストを取得できます。

編集:完全な説明については、元のポスターの回答を参照してください。

他のヒント

Before do ... end -block

内で認証メカニズムを直接オーバーライドする必要があるようです

だから、 features / support / ファイルに hooks.rb を配置して、 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 から直接読み取るのではなく、それらのヘルパーを使用することです。

残念ながら、Cucumberを介してセッションベースのSinatraアプリケーションを処理するこの方法は、すでに別の場所で説明されていると思います。私の問題は異なると思いました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top