外部API方法放置和测试

时间:2013-06-09 05:23:38

标签: ruby-on-rails

我有一个网站,显示一个包含与帖子相关的堆栈溢出查询的部分。为了获得这些,它使用SO API搜索SO以查找类似于我网站上帖子标题的帖子。

我的问题是,我应该把这个方法放在哪里?它与帖子直接相关,因为它使用帖子的标题来进行API调用。但它也与控制器直接相关,因为它返回必须传递给视图的数据。我怀疑我是否想在实际视图中为一个简单的API调用添加代码。也许我应该把它放在库/辅助方法中?

此外,一旦我决定将方法放在何处,我应该如何测试它而不必每次都调用API?我正在尝试阅读存根,但我感到困惑。在这样的上下文中有一个例子并从那里建立我的知识是很好的。

2 个答案:

答案 0 :(得分:2)

您可以将gem用于存根http请求。 我用它webmockrspectest/unitminitest

集成

答案 1 :(得分:1)

在我看来,你应该把它放在一个新的模型中(不继承ActiveRecord)。然后让控制器调用它来获取数据并将其传递给视图。 如果您想测试此模型 - 您可以使用“fakeweb”这是一个宝石,允许您使用自己的结果模拟http请求。

https://github.com/chrisk/fakeweb