1

我正在开发一个通过 Shopify_app Gem 使用 Shopify API 的 Rails 应用程序。长话短说,为了调用 Shopify API,以下代码必须出现在调用类的控制器中。

 around_filter :shopify_session, :except => 'welcome'

  def welcome
    current_host = "#{request.host}#{':' + request.port.to_s if request.port != 80}"
    @callback_url = "http://#{current_host}/login/finalize"
  end

现在,由于我的应用程序中有多个控制器,因此在每个控制器中放置上述代码似乎不太合适。我试图从每个控制器中删除代码并将其单独放在应用程序控制器中,但没有成功。任何关于我为什么会遇到这些问题的指导将不胜感激。作为奖励,如果您能告诉我如何让我的控制器测试在 RSpec 中正常工作,而无需注释掉控制器中的上述代码,我将特别感激。

谢谢你的时间

4

1 回答 1

1

当您定义该控制器的哪些方法应用过滤器时,在每个控制器中定义环绕过滤器是有意义的。应用程序控制器对它下面的类一无所知,所以把定义放在那里是没有意义的。

我建议设置FakeWeb或类似的东西来伪造 API 使用测试进行的任何外部调用。为避免 shopify_session 方法将您重定向到登录屏幕,请确保在您的测试设置中将 session[:shopify] 设置为ShopifyAPI::Session的实例。

于 2011-09-11T12:12:17.753 回答