ruby-on-rails - 如何使用 Cucumber 测试非 Ruby、非 Rack API

标签 ruby-on-rails tdd cucumber bdd capybara

我用 cucumber 做很多事情。我真的很喜欢它作为 BDD 环境。

所以我想将它用作测试 API 的外部工具。我想做这样的事情:

  Scenario: Hit api /info path and get info back
    When I visit the API path '/info'
    Then I should see the following text "Here's info on the API"

或类似的东西。我主要想将 API 视为黑盒并仅测试输入和输出。我不打算检查 API 内部的任何内容。

我看过的大多数与 Cucumber 一起工作的库(例如 Capybara)似乎都是围绕基于 Rack 的应用程序设计的。我想要类似的东西,但不依赖于机架。

存在哪些没有机架依赖性的 gem(如果有的话)。或者有没有办法使用 Capybara 来测试远程服务器上的 API?

最佳答案

我不会使用 Capybara 来测试远程 API,因为 Capybara 是为测试应用程序而设计的,用于测试具有 HTML UI 的应用程序(正如 Aslak 在评论中指出的那样)。

相反,我会将 Cucumber* 与 HTTParty 之类的东西结合使用,后者将是用于发出 HTTP 请求并巧妙地解析它们的工具。这是一个想法:

When /^I visit the API path '(.*?)'/ do |path|
  @result = HTTParty.get("http://theapi.com/#{path}")
end

Then /^I should see the following result:$/ do |result|
  @result.should == result
end

这里的最后一步你会像这样使用:

Then I should see the following result:
   """
     { success: true }
   """

* 我个人实际上会使用 RSpec,我发现语法不那么笨拙。

关于ruby-on-rails - 如何使用 Cucumber 测试非 Ruby、非 Rack API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7934013/

相关文章:

java - 在 Cucumber 中,您如何迭代多个区域设置的功能?

ruby-on-rails - Rails 4 中 rspec 功能测试的重构代码出现问题

ruby-on-rails - 无法使用 Rails 中的 Fog 将照片上传到 S3 : !! #<Excon::Errors::SocketError: 错误地址>

javascript - jQuery 将动态创建的变量传递给另一个函数

wpf - 测试驱动开发 - WPF

sql - TDD 构造器 Golang

java - Cucumber 运行场景取决于不同功能文件中的另一个

angularjs - 如何使用 browserify 运行 Protractor ?

ruby-on-rails - Ruby on Rails Oracle 编码

unit-testing - 单元测试 反模式目录