Интеграционный тест с Cucumber + Guard + Spork: могу ли я получить доступ к своей точке входа REST?

Я могу вручную протестировать свой API через rails и указать моему HTTP-клиенту http://127.0.0.1:3000/api.

Теперь я хочу автоматически тестировать свой API с помощью функций. Итак, я успешно настроил сервер Guard, который запускает Cucumber и rspec.

Огурец запускает мое приложение и предоставляет точку входа API под любым портом? Чтобы я мог использовать HTTP-клиент внутри своих определений шагов и указывать его на http://127.0.0.1:8989/api например?

Я знаю, что могу указать :cucumber_port => 4321 в Guardfile, но мой API недоступен для этого порта.


person Ginkgochris    schedule 22.02.2012    source источник


Ответы (1)


Нет, Cucumber не запускает ваше приложение с сервером.

Чтобы проверить это, вы можете сделать следующее:

  1. Используйте стек_тест. Он предоставляет вам такие методы, как #get, #post и т. д. Это предпочтительнее. Например:
get('api/test')
response.code.should == '200'
  1. Запустите свой сервер с Capybara. Однако это будет намного дольше. Вы можете сделать это, добавив следующий код в env.rb:
require 'capybara/rails'
Capybara::Server.new(Capybara.app).boot

Теперь вы можете получить доступ к своему API по адресу http://127.0.0.1:9887/api

person p0deje    schedule 22.02.2012
comment
Хорошо, эта строка была решением Capybara::Server.new(Capybara.app).boot . Я не использую Rack::Test, но теперь я могу получить доступ к своему API в своих определениях шагов. Дополнительно могу исправить порт с помощью Capybara.server_port=9887 - person Ginkgochris; 22.02.2012