ActiveMerchant 规范无法连接到 API,而开发模式使用相同的凭据工作正常
Posted
技术标签:
【中文标题】ActiveMerchant 规范无法连接到 API,而开发模式使用相同的凭据工作正常【英文标题】:ActiveMerchant specs fails to connect to API, while development mode works fine with same credentials 【发布时间】:2012-02-25 14:39:44 【问题描述】:我正在尝试为使用 ActiveMerchant
的 Checkout::Sale
类设置规范,并使用前几天设置的测试 Authorize.NET 帐户的凭据。
我的计划是使用VCR 记录网关的响应并针对它运行我的规范,所以我在运行我的规范时不会一直点击网关。
这是我正在测试的my spec and my class。
我的问题是,如果我在 Rails 控制台(开发环境)中,此代码可以完美运行,但每次运行我的规范(测试环境)时都会失败。具体来说,Authorize.NET API 抱怨我的凭据无效...
(TESTMODE) 商户登录ID或密码无效或账号 处于非活动状态。
...即使我在开发中使用完全相同的凭据并且它们工作正常。
我在config/environments/development.rb
和config/environments/test.rb
中都没有与ActiveMerchant
相关的逻辑。
我不明白完全相同的代码如何在开发而不是在测试模式下为我工作。有谁知道这是怎么回事?
我正在使用activemerchant 1.20.2
、rspec 2.8.0
和rails 3.1.1
。
注意:无论我是否使用 VCR,这都会失败;删除 VCR 似乎没有效果。
【问题讨论】:
【参考方案1】:阿芙,刚刚想通了。
仅通过test: true
只会使事务成为测试事务,即使网关仍在访问:production
网关。
由于此测试在没有加载 Rails 的情况下运行,因此我没有加载我为开发和测试指定的环境文件:
ActiveMerchant::Billing::Base.mode = :test
由于加载 rails 控制台确实加载了 Rails,这就是它在开发中工作但在我的测试中没有工作的原因。将上述内容放入before
块中解决了我的问题。
【讨论】:
以上是关于ActiveMerchant 规范无法连接到 API,而开发模式使用相同的凭据工作正常的主要内容,如果未能解决你的问题,请参考以下文章
无法将 Java ap 连接到在线 MySQL 数据库 - 错误的 URL
即使 play.ap.db.DB 可以为同一个驱动程序执行此操作,也无法使用驱动程序连接到 Redshift 数据库