我目前正在测试与JSON API通信的iOS应用。我需要在运行测试之前启动sinatra服务器。服务器作为真实API的模拟器。
有没有办法像这样ruby /path/to/server.rb
运行一行脚本?
谢谢
答案 0 :(得分:4)
转到“Mange Schemes”并选择您的方案,然后展开“Tests”并选择“Pre-actions”并添加新的运行脚本:
选择“从以下位置提供构建设置:”
我认为您要查找的变量是${SRCROOT}
答案 1 :(得分:3)
除了@Sebastian回答,请务必添加&在你的ruby命令之后,没有它sinatra会阻止你的测试执行。
在需要杀死ruby进程的情况下,注意后续操作也很有用。 以下示例使用bundler和rackup来启动sinatra。
预行动脚本示例:
exec > /tmp/tests-pre-actions.log 2>&1
source ~/.bash_profile
SERVER_PATH="${PROJECT_DIR}"/"Server"
cd "$SERVER_PATH"
bundle exec rackup > /tmp/server.log 2>&1 &
#get the PID of the process
PID=$!
#save PID to file
echo $PID > /tmp/sinatra.pid
动作后脚本示例:
exec > /tmp/tests-pre-actions.log 2>&1
source ~/.bash_profile
PID=$(</tmp/sinatra.pid)
echo "Sinatra server pid $PID"
kill -9 $PID
config.ru for rackup gem:
require './server'
trap('TERM') {Process.kill 'INT', Process.pid}
puts 'Run sinatra'
run Sinatra::Application