2017-02-16 73 views
0

我有2个rails应用程序。一个是Web界面(我称之为UI),另一种是API服务器(我称之为API)。如何在rspec测试期间启动辅助导轨应用程序?

它们一起交互,UI正在向API发送json命令。我想在集成中测试所有这些。今天,我手动从命令行启动API,并且正在寻找一种从测试套件自动启动API服务器的方法。

我正在使用Capyraba,Selenium,Rspec。在测试过程中,Capybara会自动启动一个UI服务器,我还需要启动一个API服务器。

任何提示赞赏。由于


我试图Process.spawn("cd /api/project/path && rails s -e test")但我得到一个错误ActionController::RoutingError: No route matches说,在API的路径不存在。但是当我手动运行API时,我没有这个错误。

我相信机架是越来越有2个环境

回答

0

你需要确保你的场景开始之前API运行混淆。

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

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

'system'阻塞,是不是:你可以,如果不是由before钩将运行添加规则来启动它? –

+0

更好使用'Process.spawn' –

+0

感谢您的建议。可悲的是它不起作用。我得到了'Rack应用程序错误处理请求{POST/api/path/i_m/testing} #'。当然,当我手动启动APi时,这个错误并没有增加。 – Benj