Rails测试各种集成

时间:2017-05-04 13:49:08

标签: ruby-on-rails api testing salesforce

我有一个与外部api(Salesforce)交互的rails应用程序,它依赖于位于远程数据库中的外部数据。我编写了一个包装此代码的包装器,以便用户只需调用get_by_id(id)而不是编写相应的sql查询。

我想测试这段代码,我不确定应该怎么做。我应该在Salesforce后端数据库中进行测试,调用真正的方法吗?或者我应该只是模拟方法调用的结果?我对我应该测试的内容感到困惑......

1 个答案:

答案 0 :(得分:1)

您应该像Salesforce的交互一样编写套件。

测试的基本原则是,您的测试不应因外部因素而失败。但是,您的应用应该能够从SalesForce的错误中恢复。

来自Rails 4 Test Prescriptions

  

不幸的是,与第三方Web服务交互引入了一个   我们的测试很复杂。连接到Web服务是   比我们已经尝试过的数据库连接慢得多   避免。此外,与Web服务的连接需要Internet   连接...一些外部服务是公开的 - 我们不希望每次运行测试时都向Twitter发布更新,更不用说将信用卡付款发布到PayPal。

此外,本书还有一些指导原则,

  

虚假服务器,在测试期间拦截HTTP请求   返回一个预设的响应对象。我们将使用VCR宝石...... * An   适配器,它是位于客户端和客户端之间的对象   服务器调解它们之间的访问。

     

冒烟测试,从客户端一直到真实服务器......对整个交互的完整端到端测试。我们没有   由于前面列出的所有原因,我想经常这样做,但事实并非如此   有助于防止服务器API的更改。

     

集成测试,从客户端到虚假服务器。   这测试了我们应用程序的整个端到端功能,但是   使用来自服务器的存根响应。

     

客户端单元测试,从客户端开始并以   适配器。适配器的响应是存根的,这意味着适配器   甚至没有伪造服务器电话。这允许我们对我们进行单元测试   客户端完全独立于服务器API。

     

适配器单元测试,它在适配器中启动并以   假的服务器。这些测试是链条的最后一部分,并允许我们   验证适配器的行为与任何客户端或   实际的服务器

顺便说一下,我觉得这本书是必备的