簡體   English   中英

在 Cucumber 中存根 Sinatra 助手

[英]Stubbing Sinatra helper in Cucumber

我目前正在努力從Cucumber 中找出我的Sinatra應用程序的輔助方法。

我有一個帶有簡單會話身份驗證(通過 cookie)的Sinatra應用程序,我想通過刪除 login_in 來關閉身份驗證logged_in? 我的Cucumber場景的輔助方法。 Sinatra 和 Cucumber 似乎在會話方面存在問題,所以我想只使用 Mocha 來解決這個問題。

但是,我不知道如何從Given -Block 中訪問Sinatra::Application實例來存根該方法。

似乎我需要在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 應用程序的方式已經在其他地方進行了描述,我只是認為我的問題有所不同

您可以使用Sinatra::Application.class_eval獲得正確的上下文

編輯:有關完整解釋,請參閱原始海報的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM