首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails外部API测试

Rails外部API测试
EN

Stack Overflow用户
提问于 2018-03-09 19:17:33
回答 2查看 1.1K关注 0票数 1

我正在为我的Rails应用程序编写测试。我的应用程序与处理客户支付(特别是BrainTree )的外部API通信。现在,我想确保与BrainTree通信的应用程序的类正常工作,例如它正确地向BrainTree提交用户信息和其他参数。目标是只测试BrainTree和我的应用程序之间的通信是否正常。

需要注意的一点是,BrainTree有一个沙箱帐户。为了测试我的班级,我应该:

  • 使用Capybara和Rspec这样的工具编写一个特性测试,并从用户的角度对其进行测试,例如用户登录、填写表单、提交付款等。
  • 编写一个只提交所需信息并检查返回值的请求规范。这是我想要的,但很棘手,因为BrainTree需要js,而且我不确定我是否能够在请求规范中使用js,而不需要对Rspec进行猴子修补,因为我对Rspec和一般的测试仍然相当陌生。
  • 同时编写特性和请求规范
  • 编写完全不同类型的测试

我已经准备好了特性测试,但是只测试外部API似乎很麻烦,因为它需要打开浏览器、填写表单等,在我的特性规范中,我宁愿将外部API存根,并将API测试为单元测试。请求规范看起来更高效,但js需求似乎是一个障碍。

在上面的场景中,我应该做的事情有什么最佳实践吗?

EN

回答 2

Stack Overflow用户

发布于 2018-03-09 22:03:58

通常,您通常不希望只为外部服务编写测试,而是为您自己的代码编写测试,该代码针对您收到的响应进行测试。

我发现从外部API中获取响应的最佳方法是VCR宝石。这将得到一个合法的响应,并将其保存在以后的运行中使用。您可以偶尔删除存储的响应,以确保持续的功能。

票数 2
EN

Stack Overflow用户

发布于 2018-03-09 22:24:36

另一种测试方法是使用模拟API的假服务。假Braintree宝石提供了这样的功能,为了确保正确的功能,我在其他测试中混合使用了VCR。还有很多其他的方法,但是你可以测试哪种方法适合你的需要

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49200675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档