我目前正在測試一個與JSON API通信的iOS應用程序。我需要在運行測試之前啓動一個sinatra服務器。服務器作爲真實API的模擬工具。在可可單元測試目標中運行測試之前運行腳本
有沒有辦法像這樣運行一行腳本ruby /path/to/server.rb
?
感謝
我目前正在測試一個與JSON API通信的iOS應用程序。我需要在運行測試之前啓動一個sinatra服務器。服務器作爲真實API的模擬工具。在可可單元測試目標中運行測試之前運行腳本
有沒有辦法像這樣運行一行腳本ruby /path/to/server.rb
?
感謝
轉到「疥方案」,並選擇方案,然後展開「測試」,然後選擇「預動作」,並增加了新的運行腳本:
選擇「提供編譯器的設置:」
我認爲你正在尋找的變量是${SRCROOT}
除了@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爲rackup寶石:
require './server'
trap('TERM') {Process.kill 'INT', Process.pid}
puts 'Run sinatra'
run Sinatra::Application
答案與圖片讓我快樂! – Groot
你知道我可以如何訪問ruby腳本嗎?它目前位於proyect_root/Tests/server.rb下。有沒有指向根的環境變量? 謝謝 – bilby91
我添加了另一張照片讓@Filip更加快樂! – Sebastian