ruby-on-rails - 在功能规范中 stub Contentful Model实例的好方法是什么?

标签 ruby-on-rails stubbing contentful

(我认为这个问题可以概括为对所有经过广泛ping通的API进行 stub ,但是我是根据我实际使用的代码提出这个问题的)

我们在 Controller 和 View (包括布局)中广泛使用Contentful Model。这意味着在我们访问(说)主页的任何功能测试中,我们的 Controller Action 都将包括以下内容:

class HomepageController < ApplicationController
  def homepage
    # ... other stuff
    @homepage_content = Homepage.find ('contentful_entry_id')
  end
end

...,其中Homepage是ContentfulModel::Base的子类,@ homepage_content在 View 中将对其进行各种调用(有时被链接)。在页脚中有一个相似的实例变量集,并被重复使用。

因此,对于功能测试,这是一个痛苦。我只想出两种选择:
  • 在所有Contentful模型实例上对每个调用(数十次)进行 stub ,并 stub 方法链或确保它们返回合适的模拟

  • 或者
  • 使用VCR这样的gem来存储每个功能规范的内容响应

  • 这两种方式(至少是我做这些方式的方式)都具有非常严重的缺点:

    1)导致一堆测试kruft,每次我们在相关模型中添加或删除字段时都必须更新;

    2)意味着我们会为每个功能测试生成一个vcr yaml文件-并且我们必须记住,每当我们更改测试元素以更改其发送的请求时,都要清除相关的yml文件

    我是否缺少第三种选择?还是有一些明智的方法可以完成上述任一选择而又没有主要缺点?

    最佳答案

    我是contentful_model的维护者。

    我们使用VCR stub API调用,以便您可以使用真实数据进行测试并避免复杂的测试代码。

    干杯

    关于ruby-on-rails - 在功能规范中 stub Contentful Model实例的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42121188/

    相关文章:

    node.js - 检索链接条目的字段 - Contentful

    ruby-on-rails - Ruby on Rails 服务器已启动但无法连接到 http ://localhost:3000

    ruby-on-rails - 有没有办法在不准备函数的情况下执行带有占位符的查询?

    javascript - 为什么我的可排序功能在 Rails 中不起作用?

    Swift 如何对具有依赖关系的函数进行单元测试

    javascript - 内容丰富的 Javascript SDK 和 NativeScript

    ruby-on-rails - 在 Ruby on Rails 中将 DateTime 转换为简单的 Date

    go - 如何验证是否调用了特定函数

    clojure - 'provided' 在 Midje 的事实中是如何实现的?

    javascript - 类型错误 : Converting circular structure to JSON - find error in json