【问题标题】:Test integration between two rails apps测试两个 Rails 应用程序之间的集成
【发布时间】:2012-05-07 17:50:14
【问题描述】:

我正在开发一个由两个不同的 Rails 应用程序(服务器和客户端)组成的系统,它们通过 REST Web 服务进行通信。

我对每个应用程序分别进行了测试,但我想为两个平台之间的集成添加一些测试,以断言一个平台创建的请求与另一个平台的预期兼容。

任何提示将不胜感激。

【问题讨论】:

  • 你不能部署你的服务器(甚至在本地)并为客户端的集成模块编写规范,让它真正发挥作用吗?
  • 我可以在本地运行它们,但我想以自动化方式进行,不知道如何设置/启动/停止服务器(如果我从客户端应用程序)。
  • 我都不做。但是你真的需要自动启动/关闭吗?您可以轻松地自己启动它,然后将其视为外部依赖项。
  • 也许客户端的一部分可以写成gem(例如通信rest api)。当处于测试模式的服务器应用程序可以使用客户端 gem 运行集成测试时。客户端 Rails 应用程序也可以使用 gem 向服务器发出请求。

标签: ruby-on-rails web-services system-testing


【解决方案1】:

我有类似的架构,我们使用 VCR 来记录所有服务器端响应并避免总是发出请求。它可能会变得烦人,现在我正在寻找一种在每次请求后从服务器中清除数据的方法

我认为VCR 可能是一个很好的起点,以便测试您的应用之间的集成。

你可以在这里找到文档 -> Relish Docs

【讨论】:

    【解决方案2】:

    我认为这里可能有几种方法,具体取决于您实施的内容..

    1. 如果客户端 Rails 应用程序具有用户界面,请尝试编写 Selenium tests 以在本地开发环境或已部署两者的暂存环境中执行集成测试。 (如果界面仍然是原型,经常更改,则不理想......)

    2. 也许客户端的一部分可以写成 Ruby gem(例如,通信 rest api 是一个 ruby​​ gem)。当服务端应用处于测试环境时,服务端 Rails 应用可以使用 Client gem 来运行集成测试,即调用模块函数,客户端使用相同的函数。客户端 Rails 应用程序也可以使用 gem 向服务器发出请求。 Here's a good guide 开始将您的一些可重用代码迁移到 ruby​​gem。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      相关资源
      最近更新 更多