【问题标题】:Can I use RSpec to test deployed site?我可以使用 RSpec 来测试部署的站点吗?
【发布时间】:2012-08-31 16:14:04
【问题描述】:

首先我应该说,我不太擅长测试我的代码,直到最近我才开始这样做。

所以我有这个 Rails 应用程序。它基本上是一个 API 端点。它接受请求并吐出 JSON。有很好的(我希望)测试覆盖率可以测试大部分功能。

现在我们正在部署一个临时环境,并希望让负载测试人员(独立部门)“玩”它。我想非常确定我们是否正确部署了它。

我可以针对这个暂存部署运行 RSpec 的请求规范吗?人们会做这种测试吗?什么是最佳实践?我应该读什么?

【问题讨论】:

  • 我看不到测试登台应用程序的任何附加值。只有 Travis 在我的计算机之外执行我的规范。但是你可以使用水豚来做到这一点。
  • 这是另一个部署,我想测试它的整体行为。例如,我忘了启动我的后台工作人员。现在系统运行不正常。
  • 听起来您需要自动化和测试您的部署策略。
  • 或者我应该测试一下,是的:)
  • 有这篇关于让 capistrano 为您运行一些规范的文章,在您的情况下,您可以为RAILS_ENV=staging 而不是生产环境执行此操作,但是除了特定于环境的设置之外,任何 Rails 环境都没有什么特别之处,因此您可以根据需要针对您设置的任何环境执行此操作。 vaporbase.com/postings/Running_rspec_after_you_deploy

标签: ruby-on-rails testing rspec


【解决方案1】:

是的,您可以使用 Rspec 和 Capybara 测试已部署的站点。您需要像这样更改配置:

  1. 将驱动程序更改为:webkit:selenium:poltergeist,因为默认驱动程序 (:rack_test) 不支持针对远程服务器运行。

    Capybara.javascript_driver = :selenium
    
  2. 设置 app_host。

    Capybara.app_host = 'http://example.com'
    
  3. 关闭本地服务器。

    Capybara.run_server = false
    

之后,您可以使用 Capybara DSL 为已部署的服务器创建测试。

【讨论】:

  • 该站点没有页面,没有javascript。这是一个 API 端点。它接收和发送 JSON 格式的数据。您的回答是否仍然适用于此?
  • @SergioTulentsev 是的。它仍然适用。你可以使用 capybara-mechanize 驱动程序。
  • 有没有不涉及水豚的解决方案? Capybara 非常适合用户界面,但对于我们不需要 JavaScript 甚至任何 HTML 分析的 API 端点来说可能是多余的(例如,我们不需要引入 Nokogiri)。我正在考虑 RSpec 只是运行完全相同的测试,只使用 net/http 而不是 ActionDispatch::Integration::RequestHelpers 中的方法获取 JSON。
【解决方案2】:

您可以在没有 Rails 的情况下运行 rspec,并使用 rest-client 和 json gem 来测试远程 REST 端点。

(我已使用此方法为带有 REST api 的 Java 应用程序生成可读测试。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多