Как использовать Cucumber для тестирования не-Ruby, не Rack API - PullRequest
2 голосов
/ 28 октября 2011

Я использую огурец для многих вещей. Мне действительно нравится это как среда 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-приложениях. Я хотел бы что-то похожее на это, но без зависимости от стойки.

Какие драгоценные камни, если таковые имеются, существуют, которые не зависят от стойки Или есть способ использовать Capybara для тестирования API на удаленном сервере?

Ответы [ 2 ]

5 голосов
/ 29 октября 2011

Я бы не использовал Capybara для тестирования удаленного API, потому что Capybara создан для тестирования приложений, используется для тестирования приложений с HTML-интерфейсом (как указывает Аслак в комментариях).

Вместо этого я быиспользуйте 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 лично, я считаю синтаксис менее неуклюжим.

1 голос
/ 29 октября 2011

Я уже некоторое время использую огурец против приложения Drupal. Это хорошо работает.

Это помогло мне настроить капибару с селеном

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

Если вы хотите использовать механизацию, это немного глючит. Мне пришлось использовать 0.3.0-rc3, так как были некоторые проблемы после перенаправления и т. Д. Есть еще несколько проблем с отправкой форм с именами полей, содержащих символы «[]». Я не совсем помню, как другой человек в моей команде обнаружил эту ошибку.

...