2017-02-16 14 views
0

У меня есть 2 рельсовых приложения. Один - это веб-интерфейс (я назову его UI), другой - сервер API (я назову его API).Как запустить приложение дополнительных рельсов во время тестов rspec?

Они взаимодействуют друг с другом, пользовательский интерфейс отправляет команды json API. Я хочу проверить все это в интеграции. Сегодня я вручную запускаю API из командной строки, и я ищу способ автоматического запуска сервера API из набора тестов.

Я использую Capyraba, Selenium, Rspec. Во время тестов Capybara автоматически запускает пользовательский интерфейс, мне также нужно запустить сервер API.

Любой намек оценили. Благодаря


Я попытался Process.spawn("cd /api/project/path && rails s -e test"), но я получаю ошибку ActionController::RoutingError: No route matches говоря, что путь в API не существует. Но когда я запускаю API вручную, у меня нет этой ошибки.

Я считаю, что Rack становится путать с 2 средами

ответ

0

Вы должны убедиться, что API работает, прежде чем запускаются ваши сценарии. Вы можете добавить правило, чтобы начать его, если он не работает, добавляя в before крючке:

#features/supports/app_life_cycle_hooks.rb 
Before do |scenario| 
    start_api() 
end 

def start_api() 
Process.spawn("./script/server start") 
end 
+0

'system' блокирует, не так ли? –

+0

лучше использовать 'Process.spawn' –

+0

Спасибо за ваше предложение. К сожалению, это не сработает. Я получил запрос обработки ошибок Rack app {POST/api/path/i_m/testing} # '. Конечно, эта ошибка не возникает при запуске APi вручную. – Benj