我有一个从休息 API 获取信息的对象。假设我从 API 调用 Posts,我可以指定要提取的字段。只是它的外观示例:
Post.find!(id: 1, fields: [:id, :title, :description])
这会执行 API 调用,并返回一个带有这些指定字段的 Post 对象。
为了测试,我使用 Factory Bot 对这个 API 调用进行 stub ,并直接返回一个 Post 对象,其中包含它可以查询的所有可能字段。
这种方法不是最好的,因为测试总是返回所有字段和代码本身,也许我只需要几个字段而不是全部
所以我试图实现类似(在FactoryBot中):
build(:post, fields: [:id,:title])
并设置一个带有 id 和标题的 Post 对象。如果我这样做
build(:post, fields: [:title, :created_at])
并设置一个带有标题和 created_at 的 Post 对象。等等...做了一些研究并尝试了一些想法,但在所有关于如何建立这个流程的问题上都失败了。
关于如何实现这种行为的任何想法?
编辑
Traits 似乎是一个不错的选择,但我必须与 API 调用一样一致,指定这些
fields
.所以特质对我不起作用......
最佳答案
FactoryBot 允许您通过传递属性哈希来覆盖工厂 - 那么为什么不将属性设置为 nil:
build(:post, {
title: nil,
description: nil
})
关于ruby-on-rails - 在 FactoryBot 上指定所需的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49799338/