我正在开发一个通过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中运行我的控制器测试而不在控制器中注释掉上述代码,我将特别感激。
感谢您的时间
答案 0 :(得分:1)
当您定义该控制器应用过滤器的哪些方法时,在每个控制器中定义周围过滤器是有意义的。应用程序控制器对它下面的类一无所知,因此将定义放在那里毫无意义。
我建议设置FakeWeb或类似的东西来伪造API使用测试进行的任何外部调用。要避免shopify_session方法将您重定向到登录屏幕,请确保在您的测试设置中将session [:shopify]设置为ShopifyAPI::Session的实例。