在Rails中测试很多外部API

时间:2011-11-13 12:59:55

标签: ruby ruby-on-rails-3 api testing integration-testing

我正在开发一个Rails应用程序,它依赖于外部API,例如Delicious。 所有API共享两个工作流程:

  • 在第一次通话时,他们将从一开始就加载所有数据。
  • 以下所有调用都将加载按上次执行时间过滤的数据(如果支持)。

真实地测试它们我必须为每个API创建一个测试帐户,或者至少使用我的私有API。即使使用VCR,因为它们会被调用一次。而我最大的问题是:我必须使用DateTime来解决上述两种不同的工作流程。虽然Timecop让它变得非常容易,但感觉就像屁股一样痛苦。

另一种方法是完全伪造API调用及其相应的响应,但这意味着没有真正的测试,而且我永远不会意识到API的变化或问题。

有什么建议吗?也许是两种方式的良好结合?

1 个答案:

答案 0 :(得分:1)

两者都做。

首先模拟/存储常规运行频繁测试套件中的所有内容。为所有细粒度模型/控制器测试执行此操作。

然后添加端到端测试(例如,在集成测试中),其涵盖了实际(测试)服务器的常见工作流场景。

或者使用不同的测试套件进行端到端测试,例如黄瓜代替Test :: Unit,或selenium / Watir,只要它与您通常的测试套件不同