【问题标题】:Rails tests with various integrations各种集成的 Rails 测试
【发布时间】:2017-05-04 13:49:08
【问题描述】:

我有一个 Rails 应用程序,它与依赖于远程数据库中的外部数据的外部 api (Salesforce) 交互。我编写了一个包装器来包装这段代码,这样用户就可以直接调用get_by_id(id) 而不是编写相应的 sql 查询。

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

【问题讨论】:

    标签: ruby-on-rails api testing salesforce


    【解决方案1】:

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

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

    来自Rails 4 Test Prescriptions

    不幸的是,与第三方 Web 服务交互会引入 我们的测试非常复杂。连接到 Web 服务是 慢——甚至比我们已经尝试过的数据库连接还要慢 避免。另外,连接到网络服务需要互联网 连接...一些外部服务是公开的——我们不想在每次运行测试时都向 Twitter 发布更新,更不用说向 PayPal 发布信用卡付款了。

    另外,这本书也有一些指导方针,

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

    冒烟测试,从客户端一直到真实服务器……整个交互的完整端到端测试。我们不 由于前面列出的所有原因,想要经常这样做,但它 有助于防止服务器 API 发生变化。

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

    客户端单元测试,从客户端开始,在客户端结束 适配器。适配器的响应是存根的,这意味着适配器 甚至没有进行虚假的服务器调用。这允许我们对我们的 客户端与服务器 API 完全分离。

    适配器单元测试,从适配器开始,在适配器结束 假服务器。这些测试是链条的最后一部分,允许我们 验证适配器的行为独立于任何客户端或 实际服务器

    顺便说一句,我认为这本书是必须的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多