【发布时间】:2016-08-08 05:06:41
【问题描述】:
我有以下表格用于创建付款:
payments/_form.htmlerb
<div class="container">
<div class="row-fluid">
<%= form_tag class: "form-horizontal", id: "payment-form" do %>
<%= hidden_field_tag "CardRegistrationURL", card_reg['CardRegistrationURL'], id: "CardRegistrationURL" %>
<%= hidden_field_tag "PreregistrationData", card_reg['PreregistrationData'], id: "PreregistrationData" %>
<%= hidden_field_tag "AccessKey", card_reg['AccessKey'], id: "AccessKey" %>
<%= hidden_field_tag "CardId", card_reg['Id'] %>
<%= hidden_field_tag 'project_url', contract_path(@contract), id: "contractUrlHidden" %>
<%= hidden_field_tag 'finialize_url', finialize_url, id: "finializeUrl" %>
<fieldset>
<div id="legend">
<legend class="">Deposit for contract <%= @contract.title %></legend>
</div>
<div id="legend">
<legend class="">Amount <%= @contract.amount %></legend>
</div>
<!-- Name -->
<div class="control-group">
<%= label "card_holder", "Card Holder's Name", class:"control-label" %>
<div class="controls">
<%= text_field_tag "card_holder", '', { id: "username", class: "input-xlarge"} %>
</div>
</div>
<!-- Card Number -->
<div class="control-group">
<%= label "card_number", "Card number", class:"control-label" %>
<div class="controls">
<%= text_field_tag "Alias", '', { id: "card_number", class: "input-xlarge"} %>
</div>
</div>
<!-- Expiry-->
<div class="control-group">
<%= label "expity_date", "Card Expiry Date", '', class:"control-label" %>
<div class="controls">
<%= text_field_tag "ExpirationDate", '', { id: "card_expiration_date", class: "input-xlarge"} %>
</div>
</div>
<!-- CVV -->
<div class="control-group">
<%= label "cvv", "Card CVV", class:"control-label" %>
<div class="controls">
<%= text_field_tag "cardCvx", '', { id: "cardCvx", class: "input-xlarge"} %>
</div>
</div>
<!-- Save card -->
<div class="control-group">
<div class="controls">
<label class="checkbox" for="save_card">
<%= label "save_card", class:"check_box" %>
<input type="checkbox"> <!-- , '', id="save_card" value="option1"> //-->
Save card on file?
</label>
</div>
</div>
<!-- Submit -->
<div class="control-group">
<div class="controls">
<%= submit_tag "Pay now", {class: "btn btn-success", id: "process"} %>
</div>
</div>
</fieldset>
<% end %>
</div>
</div>
register_card.coffee
jQuery ->
$('#payment-form').submit (e) ->
e.preventDefault()
$this = $(this)
mangoPay.cardRegistration.init
cardRegistrationURL: $("#CardRegistrationURL").val()
preregistrationData: $("#PreregistrationData").val()
accessKey: $("#AccessKey").val()
cardData = {
cardNumber: $("#card_number").val()
cardExpirationDate: $("#card_expiration_date").val()
cardCvx: $("#cardCvx").val()
}
contract_url = $("#contractUrlHidden").val()
finialize_url = $("#finializeUrl").val()
mangoPay.cardRegistration.sendDataWithAjax(
# URL to capture response
finialize_url,
# Card data
cardData,
# Result Ajax callback
(data) ->
$this.replaceWith('<p> Payment okay</p> </br> <div id="contract_url"><a href="">Return back to project</a></div>')
$("#contract_url a").attr("href", contract_url)
#doRedirect = -> window.location.href = data['url']
#setTimeout doRedirect, 2000
(xhr, status, error) ->
alert("Payment error : " + xhr.responseText + " (" + status + " - " + error + ")")
)
return false
点击“立即付款”按钮后,将启动脚本 register_card.coffee。成功注册卡后查看付款/新将呈现新文本:感谢付款。如何测试这个正确?
我做以下事情:
expect(current_path).to eq(new_payment_path)
expect(page).to have_text("Deposit for contract")
fill_in "card_holder", with: "firstname lastname"
fill_in "Alias", with: "4706750000000033"
fill_in "ExpirationDate", with: "1017"
click_button "Pay now"
expect(current_path).to eq(new_payment_path)
expect(page).to have_text("Return back to project")
但在行 click_button“立即付款”上显示错误。 失败/错误:click_button“立即付款” 动作控制器::路由错误: 没有路线匹配 [POST] "/payments/new"
我如何忽略 [POST] "/payments/new?因为所有数据都在脚本 register_card.coffee 中使用 ajax 发送。
【问题讨论】:
标签: ruby-on-rails rspec coffeescript capybara