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 【问题描述】:

我正在尝试为使用 ActiveMerchantCheckout::Sale 类设置规范,并使用前几天设置的测试 Authorize.NET 帐户的凭据。

我的计划是使用VCR 记录网关的响应并针对它运行我的规范,所以我在运行我的规范时不会一直点击网关。

这是我正在测试的my spec and my class。

我的问题是,如果我在 Rails 控制台(开发环境)中,此代码可以完美运行,但每次运行我的规范(测试环境)时都会失败。具体来说,Authorize.NET API 抱怨我的凭据无效...

(TESTMODE) 商户登录ID或密码无效或账号 处于非活动状态。

...即使我在开发中使用完全相同的凭据并且它们工作正常。

我在config/environments/development.rbconfig/environments/test.rb 中都没有与ActiveMerchant 相关的逻辑。

我不明白完全相同的代码如何在开发而不是在测试模式下为我工作。有谁知道这是怎么回事?

我正在使用activemerchant 1.20.2rspec 2.8.0rails 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 数据库

如何获取 wifi AP 列表并从 Windows 商店应用程序连接到一个 AP

无法通过 AWS.RDS.Signer 连接到 RDS

通过VBA连接到DBF的查询

无法连接到 python 上的 cassandra(使用 cassandra-driver