如何使用Cucumber来测试非Ruby,非Rack API

我用黄瓜做很多事情。 我非常喜欢它作为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的应用程序设计的。 我想要类似的东西,但不依赖于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,我觉得语法不那么笨拙。

我已经使用黄瓜对抗Drupal应用程序了一段时间了。 它运作良好。

这有助于我用selenium建立水豚

https://github.com/thuss/standalone-cucumber

如果你想使用机械化,那就有点儿了。 我不得不使用0.3.0-rc3,因为重定向后有一些问题。提交包含“[]”字符的字段名称的表单仍然存在一些问题。 我不记得我团队中的另一个人发现了这个错误。