Factory_girl 瞬态属性是什么?我为什么要使用一个?

2024-01-03

I read this https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#transient-attributes来自 Thoughtbot 但它仍然让我感到困惑。

这是他们的例子:

factory :user do
  transient do
    rockstar true
    upcased  false
  end

  name  { "John Doe#{" - Rockstar" if rockstar}" }
  email { "#{name.downcase}@example.com" }

  after(:create) do |user, evaluator|
    user.name.upcase! if evaluator.upcased
  end
end

create(:user, upcased: true).name
#=> "JOHN DOE - ROCKSTAR"

So,

  1. Is .upcased模型上的真实属性?
  2. 是什么transient块真的在做什么?设置可以在工厂中使用的变量?
  3. What is evaluator?它总是需要最后通过吗?如果你的create函数使用特征、瞬态并且具有多个值?

factory_bot 的瞬态“属性”根本不是属性;它们只是工厂方法调用的参数,可供工厂内的代码使用。所以,在你的例子中,不,upcased不是模型属性。

The transient块列出了“属性”名称(即传递给工厂方法的哈希中的键)not属性。在新创建的模型实例上设置属性时,factory_bot 会忽略它们,除非您在工厂定义中编写代码来告诉factory_bot 对它们执行某些操作。

evaluator是传递给factory_bot回调的对象。它始终是第二个块参数;模型对象始终是第一个参数。它在概念上类似于 Ruby 的binding。您可以向它询问参数哈希中任何键的值,无论它是实际属性还是瞬态“属性”。

就工厂方法的参数而言,特征和瞬态属性不会相互影响,因为特征是标量,而瞬态属性是参数哈希的一部分。参数散列中可以包含任意数量的真实属性和瞬态“属性”。

这是用于记录的factory_bot文档:https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Factory_girl 瞬态属性是什么?我为什么要使用一个? 的相关文章

随机推荐

  • Delphi XE2 RTTI坏了?

    我最近从 D2010 迁移到 DXE2 并在 XE2 和 XE3 在我的朋友 XE3 中测试 中发现了一个与类内 TBytes 字段的 RTTI 生成相关的致命错误 或功能 我发现类内 TBytes 变量的 RTTI 信息永远不会生成 以下
  • Git 克隆错误:“致命:不允许...引用的多次更新”

    我尝试时遇到错误git clone一个存储库 git clone https github com laradock laradock git Cloning into laradock remote Enumerating objects
  • 使用 LINQ 在 OrderBy 中自定义排序逻辑

    对字符串列表进行排序的正确方法是什么 我希望以下划线 开头的项目位于列表的底部 否则一切都是按字母顺序排列的 现在我正在做这样的事情 autoList OrderBy a gt a StartsWith ZZZZZZ a a 如果您想要自定
  • Android 媒体播放器错误 (1,-1010)

    我正在尝试从 URL 流式传输音乐 我正在使用 SeekBar 来更改歌曲的位置 尝试将歌曲的位置更改为尚未下载的位置时出现错误 在其他情况下 如果歌曲已完全下载 则代码可以正常工作 出现以下错误 E MediaPlayerNative 错
  • Spring boot嵌入式tomcat - 413请求实体太大

    我在 IBM 公共云上运行 我有 apu 连接来访问 Cloud Foundry 微服务 我已经浏览了很多帖子并尝试了各种方法 但我似乎无法让它发挥作用 这是我的 Spring Boot 属性文件配置设置 The name of the a
  • MySQL:在结果之间使用日期条件

    我有一个执行此操作的 SQL 语句 group by date having date between 2010 07 01 and 2010 07 10 结果如下 sum test day 20 2010 07 03 120 2010 0
  • 基于条件标准寻找模式

    我希望能够在相邻列中根据特定标准找到最常见的值 例如 gt ROW A ROW B gt Blue Jason gt Blue Jason gt Blue Charles gt Red Alfred gt Red Alfred gt Red
  • 回调函数抛出意外的“不一致的参数”错误

    我正在使用 GNU Octave 版本 4 4 1 我正在尝试通过包含两个滑块来制作简单振荡器的交互式绘图 这两个滑块将允许更改初始速度和振荡器质量 绘图本身以及带有一个滑块 用于速度 的脚本都显示良好 这是带有回调函数的脚本的一部分 fu
  • GCD 和 RunLoop

    在我的应用程序中我添加了一个CFMach端口参考 via CFMachPortCreateRunLoopSource 到线程CF运行循环 现在我问自己 这可以使用 GCD 来完成吗 让我们说 而不是生成我自己的NSThread并添加创建的C
  • git:如何将某个作者的所有提交重新设置为单独的分支?

    I m using some code for which no SCM is used and receive occasional updates in the form of all project files although on
  • 适用于套接字流的 C++/Java 序列化库?

    我需要用 C Obj C 编写一个服务器 它可以从用 Java 和 C 构建的多个客户端接收流数据 挑战 我需要有效地序列化和反序列化数据结构 一个 C 客户端将生成 128x96x2 维浮点数组以及一些元数据 每秒大约 30 次 视频功能
  • 如何在客户端服务中动态加载SPRING_PROFILES_ACTIVE值?

    我是 Spring 新手 正在创建 Spring Cloud 配置服务 我已成功创建配置服务 其中所有配置都在那里 在我的客户端服务中 这将从配置服务中获取所有必要的配置 我需要根据SPRING PROFILES ACTIVE清单文件中定义
  • 使用纹理贴图对球体进行凹凸贴图

    我们想用纹理贴图对球体进行凹凸贴图 然而 表面 球体的面积是纹理贴图面积的 10 倍 两者的面积均以像素为单位 描述纹理贴图用于凹凸贴图的不同方式 通常矩形纹理用于球体 texture u v 坐标用作球坐标的角度 结果是 纹素在赤道附近较
  • EF6 中的急切加载、延迟加载和显式加载

    我读过这个tutorial http www entityframeworktutorial net EntityFramework5 entity framework5 introduction aspx和这个article https
  • 仅当省略号处于活动状态时才显示工具提示

    我有下一个 div div class div class style width 158px title 如何仅在省略号处于活动状态时显示工具提示 我发现这个功能 function isEllipsisActive e return e
  • 我可以记住通用方法吗?

    我有 2 个昂贵的通用方法 public T DoStuff
  • 在Python Pillow中设置图像分辨率

    我正在使用 Python Pillow 来修改图像 每当我保存 jpeg 时 内部分辨率都会设置为 72dpi 我想看看如何将其设置为不同的值 我意识到这只是一个数字 在很多方面它毫无意义 我的动机是当我将图像读入 Photoshop 时使
  • 想要在用户单击完成后调用presentingViewController中的方法

    新手 iOS 开发人员在这里使用了一款 iOS 应用程序 我有一个 iOS 应用程序的设置部分 当用户单击 完成 时 我需要模式视图控制器 目前是这样 并且我想在presentingViewController 中调用一个名为 update
  • Swift 4 中的文本到语音转换

    我正在尝试将文本到语音功能集成到我的 iOS 应用程序中 为此我正在使用AVSpeechUtterance and AVSpeechSynthesisVoice类的AVFoundation框架 extension String func s
  • Factory_girl 瞬态属性是什么?我为什么要使用一个?

    I read this https github com thoughtbot factory girl blob master GETTING STARTED md transient attributes来自 Thoughtbot 但它