我目前正在努力从 Cucumber 中删除我的 Sinatra 应用程序的辅助方法。

我有一个带有简单会话身份验证的 Sinatra 应用程序(通过Cookie)我希望通过为我的删除 logged_in?帮助方法来启用身份验证黄瓜场景。 Sinatra和Cucumber似乎有关于会话的问题,所以我想到只使用Mocha来解决这个问题。

但是,我不知道如何从 Given -Block中访问 Sinatra :: Application 实例以隐藏方法。

有帮助吗?

解决方案

您可以使用 Sinatra :: Application.class_eval

获取正确的上下文

编辑:请参阅原始海报的答案以获得完整的解释。

其他提示

似乎我需要在之前直接覆盖我的身份验证机制。在结束之前...结束 -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