考慮一個Rails應用程序,該應用程序正在與Rails應用程序分開開發的(Sinatra應用程序)API。我想從Rails測試中測試一個API調用。如何測試Rails HTTP請求到Sinatra應用程序?
的API代碼:
post '/foo/create' do
...
我創建了一個模擬,但沒有任何意義,因爲它只是一個API的文件的副本。臭死了。
可以在測試中要求API文件。但是如何從RSpec調用它? Rails應用程序中沒有路線。
一種選擇是啓動API,並從Rails的測試HTTP調用,但這是臭的原因是:
- 你必須要對API服務器運行Rails的測試
- 爲什麼要Rails測試發出HTTP請求? Rack :: Test模擬了這一點。
- 我不認爲這將工作,因爲這些應用程序有不同的測試數據庫,但共享相同的生產數據庫。
編輯:測試的要點是API調用創建Rails應用程序所期望的記錄。所以Rails應用程序需要在API調用完成後測試數據庫的狀態。
你是什麼意思「創建一個模擬」? [webmock](https://github.com/bblimke/webmock)是這類事情的絕佳工具,特別是與[vcr](https://github.com/vcr/vcr)配對時。 – willglynn
通過「創建一個模擬」我的意思是添加了代碼,API將在運行HTTP請求時運行。 –