Capybara - 覆盖一个值

时间:2012-08-28 02:58:03

标签: ruby-on-rails ruby rspec capybara

我有以下有趣的场景:

测试系统,在我的案例中,ActiveMerchant的BogusGateway需要“伪造”类型的信用卡才能生效。当然,这不是我向用户提供的选项之一。

在我的请求规范中,我试图用“虚假”覆盖签证的原始值,但是我不知道它是如何完成的。我尝试过类似的东西,但没有明白:

# setting the value for the visa card to be 'bogus'
find(:xpath, "//input[@id='billing_account_card_type_visa']").set "bogus"

# then clicking on the radio button...
choose "billing_account_card_type_visa"

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

如果用户不能选择该选项,Capybara应该怎么做呢?

不要模仿无法执行的用户操作,只需使用无效参数发出请求:

post "/my_billing_path", :billing_account => { :card_type => "bogus }

答案 1 :(得分:0)

您可以使用capybara的fill_inchoose方法:

fill_in("billing_acount_card_type_visa", :with => "bogus")
choose("billing_account_card_type_visa")

答案 2 :(得分:0)

使用以下数字进行验证并使用capybara和虚假网关测试成功的交易:

  • VISA = 4111111111111111
  • MASTERCARD = 5500000000000004
  • AMEX = 340000000000009
  • DISCOVERY = 6011000000000004