2011-08-03 45 views
1

我下面用activemerchant和authorize.net(我知道这是旧的,但它是为我工作的一个)黄瓜和activemerchant重复交易问题

http://www.misuse.org/science/2007/12/13/using-activemerchant-to-process-credit-cards-in-rubyrails/

不管怎么说,他的修复黄瓜测试验证码对于重复交易问题(当快速通过大量黄瓜场景时)是为对象分配一个随机价格,这样每次都会有所不同。

问题在于它有效地使正确的价格测试几乎不可能。我应该如何重写我的测试或设置授权或Activemerchant绕过这个问题?我试图写一个测试,检查我的购物车的总价格,如果我改变了一些项目,这是不可能的随着价格是随机的。

我目前唯一的定价检查(其工作原理)是我查看ui并检查div .total-price中的价格,并检查它是否与所有项目的价格相加。它确实通过了,但如果我改变了价格呢?我肯定不知道总价是多少(因为它们都是随机的),我将无法检查新的价格(因为它仍然是随机的)

谢谢!

回答

1

使用webmock或类似库来存根authorize.net。

这里是例子:

Given /^authorize\.net will authorize payment$/ do 
    stub_request(:post, "https://apitest.authorize.net/xml/v1/request.api"). 
    with(:body => /.*createCustomerProfileRequest.*/). 
    to_return(:body => fixturefile("authorize_net_create_profile_ok_response.xml")) 

    stub_request(:post, "https://apitest.authorize.net/xml/v1/request.api"). 
    with(:body => /.*createCustomerProfileTransactionRequest.*/). 
    to_return(:body => fixturefile("authorize_net_authorize_ok_response.xml")) 
end 
  • 免费奖金 - 你的测试的运行速度更快,并不会依赖于authorize.net沙箱的正常运行时间
+0

哇,这是快!嗯,我会研究这个,并接受当我得到这个工作(因为有很多地方我需要改变测试)。现在有一个投票:) – corroded