5

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

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

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

4

2 に答える 2

3

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ではなく、それらのヘルパーを使用することです。

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

于 2009-11-26T09:58:21.673 に答える
2

を使用して適切なコンテキストを取得できますSinatra::Application.class_eval

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

于 2009-11-25T23:38:13.333 に答える