我對Rails應用程序進行了整合測試,該應用程序發佈到Braintree的透明重定向API。基本上測試會填寫有效數據的表單,並簡單地期望返回正確的響應。我並不試圖測試Braintree的每一個驗證 - 只需要一次測試來確保我的表單在大多數情況下都能正常工作。將表單發佈到外部URL失敗w/RoutingError測試時
然而,我的形式拋出這個錯誤:
1) Braintree CreditCard integration creates a credit card on Braintree and locally
Failure/Error: click_on 'Add card'
ActionController::RoutingError:
No route matches [POST] "/merchants/XXX/transparent_redirect_requests"
所涉的form_for助手的樣子:
=form_for :credit_card, :params => @result && @result.params[:credit_card],
:errors => @result && @result.errors.for(:credit_card),
:builder => ApplicationHelper::BraintreeFormBuilder,
:url => Braintree::TransparentRedirect.url,
:html => {:autocomplete => "off"} do |f|
相關行似乎是布倫特裏:: TransparentRedirect.url - 也許在這個測試環境會被截斷/丟失相關的主機信息?並非如此!輸出page.html中的測試顯示如下:
<form accept-charset="UTF-8" action="https://sandbox.braintreegateway.com:443/merchants/XXX/transparent_redirect_requests" autocomplete="off" method="post">
那麼爲什麼測試似乎嘗試打/商人......我自己的服務器上,而不是在數據發佈到sandbox.braintreegateway.com ,因爲表單的動作屬性明確指出?
此外,手動複製測試程序(用有效數據填寫表單,點擊提交)可用於開發和生產。