![](/img/trans.png)
[英]Rails 4 Rspec Capybara/Selenium : Internal server error
[英]rails rspec capybara cannot get my internal api to connect
我正在重構一個基本的Rails應用,以便對外部docker / compute即服務Iron.io進行繁重的工作。 工人'
在重構創建的Grape API時,允許遠程“工作者”的處理狀態在處理完成時通知服務器。 然后,用戶界面使用ajax輪詢本地服務器以進行更新。 API和基本測試都可以。 它也可以使用運行工作程序的Delayed :: job在開發中工作。
但是我似乎無法讓我的水豚測試端到端地工作,因為延遲的:: job運行過程使HTTP請求返回到服務器始終會拒絕連接。
如果我在測試中並行運行Rails服務器,則工作正常:( RAILS_ENV="test" rails s -p 3001
),然后確保將ENV變量設置為端口3001。
我試過了
url="http://#{Capybara.server_host}:#{Capybara.server_port}"
)以查看是否“啟動”了服務器 非常感謝任何想法,經驗或指導
本
注意:在代碼中
測試中填充的ENV變量
Capybara.configure do |config| config.run_server = true config.server_port = "9876" config.app_host = "http://127.0.0.1:9876" end
滑軌4.1.0 rspec 3.4.0水豚2.7.0 Poltergeist 1.5.1硒2.53.0
我認為您正在嘗試太多測試。 我建議您“模擬”與其他服務的交互,以使測試自足。 在過去,我添加了一個test.js
:
page.evaluate_script
) execute_script
) 像這樣:
# test.js
$.ajax = function(settings) {
window.__ajaxRequests || (window.__ajaxRequests = []);
window.__ajaxRequests.push(settings);
return {
done: function(cb) { settings.__done = cb; }
}
}
# spec/features/jobs_spec.rb
visit '/jobs'
click_button 'Start job'
requests = page.evaulate_script('window.__ajaxRequests')
expect(requests.size).to eq(1)
expect(requests[0].url).to eq('http://jobs.yourproduct.com/start')
...
expect(page).not_to have_content('Job completed')
page.execute_script('window.__ajaxRequests[0].__done({data:{status:"complete"}})')
expect(page).to have_content('Job completed')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.