ruby-on-rails - 在 FactoryBot 上指定所需的字段

标签 ruby-on-rails ruby rspec factory-bot

我有一个从休息 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/

相关文章:

ruby-on-rails - 我可以在 rake 任务中包含辅助方法吗

ruby - Ruby 是否有正式的规范(如 Java 语言规范 (JLS))?

ruby - 保护 Sinatra 应用程序的最佳实践是什么?

javascript - 如何使用 Capybara 选择 Javascript 生成的选项

ruby-on-rails - rspec 中 Rails Runner 的环境问题

ruby-on-rails - 公制-Fu/Rcov "No File To Analyze"

ruby-on-rails - 测试设计不可或缺

ruby-on-rails - 在 ActiveAdmin 索引页底部插入自定义元素

Ruby 递归问题

rspec 未定义方法 `receive' 对于期望语法