在功能规范中存储内容模型实例的好方法是什么?

Are*_*epo 1 ruby-on-rails stubbing contentful

(我认为这个问题可以概括为任何广泛使用的API,但我根据我实际使用的代码提出问题)

我们在控制器和视图中广泛使用Contentful Model,包括我们的布局.这意味着在我们访问(比如说)主页的任何功能测试中,我们的控制器操作将包括以下内容:

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

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

因此,对于功能测试,这是一个痛苦.我只想出两个选择:

  1. 在所有Contentful模型实例上对每一个调用(几十个)进行存根,并使用存根方法链或确保它们返回合适的模拟

要么

  1. 使用像VCR这样的gem来存储每个功能规范的Contentful响应

这两个(至少我正在做的方式)都有相当不好的缺点:

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

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

我错过了第三种选择吗?或者是否有一些明智的方法来做上述任何一种选择而不会遇到主要缺点?

小智 5

我是维护者contentful_model.

我们使用VCR来存根API调用,以便您可以使用实际数据进行测试并避免复杂的测试代码.

干杯