Rspec等于法

2024-03-15

据我了解, equal 方法检查对象是否相同。

person = Person.create!(:name => "David")
Person.find_by_name("David").should equal(person)

这应该是真的。

但这里不是有两个不同的物体吗?

两个物体怎么可能是相同的呢?我不明白。


Rails 和 RSpec 相等测试有多种选择。

Rails 3.2 ActiveRecord::Base 使用==平等匹配器。

它以两种不同的方式返回 true:

  • If self与比较对象是同一个对象
  • If self与比较对象类型相同且ID相同

请注意,ActiveRecord::Base 有==别名为的方法eql?。这与典型的 Ruby 对象不同,后者定义== and eql?不同。

RSpec 2.0 在 rspec-expectations 中有这些等式匹配器:

a.should equal(b) # passes if a.equal?(b)
a.should eql(b) # passes if a.eql?(b)
a.should == b # passes if a == b

RSpec 还有两个相等匹配器,旨在让它们更有 DSL 的感觉:

a.should be(b) # passes if a.equal?(b)
a.should eq(b) # passes if a == b

在您的示例中,您正在创建一条记录然后查找它。

所以你有两种测试选择#find_by_name:

  • 测试它是否检索完全相同的对象OR具有相同 ID 的等效人员记录,然后使用should ==或其等价物a.should eql或其 DSL 版本should eq

  • 测试它是否使用完全相同的对象NOT具有相同 ID 的等效人员记录,然后使用should equal或其 DSL 版本should be

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

Rspec等于法 的相关文章

  • 有没有人有 Ruby 和 Rake 的 Notepad++ 函数列表插件的解析规则

    我使用 Notepad 编辑 rake 文件 并且希望能够使用函数列表插件 我无法在线找到任何解析规则 并且 语言解析规则 对话框没有非常清晰的记录 我正在将方法解析到以下列表中 但还想显示任务 Function Begin t def t
  • 通过推送通知唤醒

    Suppose 有一些对象 例如 一个数组a 和依赖于对象的条件 例如 a empty 当前线程以外的某些线程可以操作该对象 a 因此条件评估值的真实性会随着时间的推移而变化 如何让当前线程在代码中的某个时刻休眠 并在条件满足时通过推送通知
  • 如何计算带有偏移量的异或?

    我想用不同的偏移量进行异或计算以在计算中列出 例子 key 0 1 0 text 0 1 0 1 0 1 0 1 1 1 异或计算 key 0 text 0 key 1 text 1 key 2 text 2 key 0 text 3 ke
  • Ruby 中的任务/未来

    代表潜在延迟的异步计算并且可以订阅其完成的模式的惯用 Ruby 模拟是什么 即类似于 NET 的东西System Threading Task 或Python 3 xconcurrent futures future 请注意 这并不一定意味
  • Rails 控制台无法运行

    rbenv 红宝石版本 2 6 6 导轨版本 5 1 4 我正在较旧的代码库中工作 ruby 2 6 6 rails 5 4 1 这是我每天使用的代码库 我必须通过 rbenv 下载一个新的 ruby 版本作为单独的存储库 这样做在我的旧代
  • 如何使用本地安装的gems执行Ruby程序?

    我已经使用安装了我的依赖项 bundle package 然后将它们传输到离线服务器并运行 gt bundle install local Using mime types 1 19 Using rest client 1 6 7 Usin
  • 如何使用 Rspec 测试具有嵌套路由的控制器?

    我有 2 个使用轨道脚手架生成器创建的控制器 我希望它们嵌套在一个名为 demo 的文件夹中 所以运行 rails g scaffold demo flows rails g scaffold demo nodes 然后我决定将节点嵌套在流
  • 使用 attr_accessor 动态创建类属性

    在Ruby中 有没有办法动态地将实例变量添加到类中 例如 class MyClass def initialize create attribute name end def create attribute name attr acces
  • 我在 Rails 中使用了保留字吗?

    这是我的模型 class Record lt ActiveRecord Base belongs to user belongs to directory end class Directory lt ActiveRecord Base h
  • Nokogiri 保持 HTML 实体不变

    我希望 Nokogiri 保持 HTML 实体不变 但它似乎正在将实体转换为实际的符号 例如 Nokogiri HTML fragment p reg p to s 结果是 p p 似乎没有什么可以将原始 HTML 返回给我 inner h
  • Rails - 渲染:目标锚标记的操作?

    我希望像这样使用渲染 render action gt page form 我也尝试过这个 render template gt site page form 那也没用 这个特定页面上的表单位于最底部 如果提交时发生任何错误 我不希望用户被
  • 用户未定义的方法 attr_accessible 错误

    我正在尝试创建某种登录 我创建了一个用户脚手架并将此代码放在我的 user rb 中 class User lt ActiveRecord Base attr accessible name password digest password
  • Ruby 是否有一个 Expect 等效 gem?

    Ruby 是否有一个 Expect 等效 gem 我尝试在 code google 和 ruby gems org 上搜索 但遗憾的是它没有出现 FYI Expect http en wikipedia org wiki Expect是一个
  • Shoulda/RSpec 匹配器 - 条件验证

    在我的代码中 我使用 Shoulda 匹配器进行了以下验证 效果很好 it should validate presence of name 在我的模型中 我已将条件添加到验证中 validates presence of name if
  • 什么是适合 Rails 3 的测试框架?

    去年我一直在使用 Ruby On Rails 但是 无法进行单元测试 现在我必须编写单元测试代码 哪个测试框架好 为什么 有这方面的好的教程吗 我的系统配置 Ruby 1 9 2 Rails 3 Ubuntu 10 第一个技巧是 尝试升级到
  • 超类与类SpecificationPolicy不匹配

    我得到了一个superclass mismatch for class SpecificationPolicy尝试安装或升级某些brew 软件包时出错 例如 更新安装 supabase CLI 时 brew install supabase
  • 为 RoR 中的每个用户创建新的 URL 路径

    如何在 Ruby on Rails 中实时创建新的 URL 路径 例如 我希望我的用户拥有 name XXX com 或 XXX com name 仅供参考 我在 Heroku 上托管代码 看看 subdomain fu 插件 https
  • 使用 ruby​​ 调整动画 GIF 图像的大小?

    我正在尝试将 GIF 图像调整为不同的尺寸 我在 ruby 中使用 RMagick 库 但对于某些 gif 图像 即使我缩小 GIF 的大小 文件大小似乎也会增加 我正在以相同的纵横比调整图像图像的大小 这是我的代码 require rma
  • 带有 git Remote 的 Gem 文件在 Heroku 推送上失败

    我的 gemfile 中有以下行 gem client side validations git gt email protected cdn cgi l email protection Dakuan client side valida
  • 如何使用 ruby​​ 和命令行工具在 mavericks 中正确安装 cocoapod?

    这是我的设置 小牛队10 9 1 Xcode 5 0 2 哪个红宝石返回这个 Users quique123 rvm rubies ruby 1 9 3 p194 bin ruby 但 dvm install ruby 返回 Already

随机推荐

  • 从 NSString 中删除 @"" 或将 NSString 类型转换为变量名

    我从文件中读取 NSString 然后我想将其 define 为 UIColor 以便我可以快速更改颜色 我想要像这样工作的东西 define GRAY UIColor darkGrayColor 然后从文件中读取字符串 GRAY 并将其放
  • 在kotlin中如何使用ViewModel和ViewModelProvider.AndroidViewModelFactory?

    在我当前的项目中 我使用下一行 mViewModel ViewModelProviders of this get MainViewModel class java 例如一个ViewModel but in https developer
  • CMake 是否可以始终强制编译/构建特定文件? [复制]

    这个问题在这里已经有答案了 我有一个 C 文件 使用 DATE 显示我的应用程序的构建日期 但如果这个文件没有被修改 它就不会被重建 日期也不会被更新 CMake 总是可以重建该特定文件吗 显然可以使用 makefile 如何强制 make
  • addChild的正确使用

    我是编码和 AS3 的新手 我正在阅读有关使用 AS3 将内容添加到舞台的内容 并了解了 addChild 方法 阅读更多内容后 我发现有不同的使用方法 我还读到有些方法比其他方法更好 而有些方法根本不好 最好避免 但我不相信这些消息来源
  • 如何获取枚举值的枚举定义?

    object TestEnum extends Enumeration val One Value One val Two Three Value println TestEnum One getClass println TestEnum
  • 如何从 jpeg 文件中的 FFC4 (DHT) 标头创建霍夫曼树?

    我以为我可以自己解决这个问题 但我似乎根本没有进展 好的 背景 我需要根据 jpg 文件中的 FFC4 DHT 定义霍夫曼表 标头提供的信息创建霍夫曼代码树 DHT 标头以这种方式定义 Huffman 表 1 一系列16字节 每个字节定义有
  • Pylint变量名不符合snake_case命名风格

    我收到来自 pylint 的多个警告 如下所示 变量名 df 不符合snake case命名风格 据我所知 这是因为变量名长度小于 3 个符号 但是我想使用 df i x 等变量 因此 我需要添加几个变量名称来检查异常 我尝试将该名称添加到
  • 使用 jquery 突出显示表行

    我知道有很多关于此的帖子 但我不知道为什么我的不起作用 我试图突出显示表中的一行 tr class videorow td td tr css highlight background color a8cb17 最后是我的 jQuery j
  • 如何更改Linux中ipython/jupyter笔记本使用的默认浏览器?

    我使用的是 Linux Mint 17 3 如何更改 Jupyter Notebook 使用的默认浏览器 我已将笔记本安装为 Anaconda 3 的一部分 并在我的默认浏览器 Chrome 中打开 但出于某种原因 Chrome 不允许我创
  • 对抛出异常的控制器进行单元测试

    我有一个具有以下签名的控制器 public CustomerTypeController IHttpContextAccessor accessor IPrincipalProvider provider IMapper mapper IL
  • 在 Cypress 中如何根据名称选择输入元素?

    我开始学习Cypress 我想使用 cypress io 选择输入字段并提供电话号码 我遵循的代码但它不起作用 但是我可以使用 find 还是有其他方法让输入元素输入电话号码 cy get div contains Phone Number
  • LINQ To SQL 动态选择

    有人可以告诉我如何指示我希望在运行时从 LINQ To SQL 语句返回哪些列吗 我允许用户在复选框列表中选择项目 这些项目代表他们希望在绑定到 L2S 查询结果的网格视图中显示的列 我能够动态生成 W HERE 子句 但无法对 SELEC
  • 如何使用 cURL 从 GitHub 下载 tarball?

    我正在尝试使用以下命令从 GitHub 下载 tarballcURL http en wikipedia org wiki CURL 但它似乎没有重定向 curl insecure https github com pinard Pymac
  • 错误:属性“颜色”已定义,更新 appcompat v-7

    我正在尝试将 Android Studio 项目中的 appcompat v7 从 v20 0 0 更新到 21 0 0 以使用材料设计组件 但我总是遇到相同的错误 错误 属性 颜色 已被定义 我不知道如何修复此错误 我在互联网上搜索但无法
  • Python:如何删除['和']?

    我想删除 从一开始和 从字符串末尾开始的字符 这是我的文字 45453656565 我需要这样的文字 45453656565 我尝试过使用str replace text text replace 但它不起作用 您需要通过将不需要的字符传递
  • 为什么 main() 需要大括号?

    我尝试了几种变体 main return or main if 并得到了不同的错误 其中最奇特的是 usr lib gcc i686 linux gnu 4 4 5 lib crt1 o In function start text 0x1
  • ANDROID STUDIO 无法访问fragment_main.xml中的对象

    我有一个简单的 Android 应用程序 布局文件夹显示一个activity main xml 文件和一个fragment main xml 文件 在该fragment xml 文件中 我放置了一个名为buttonTest 的按钮
  • Watchkit 动画实现:钟面、动画图表、圆形进度条

    我看过一些潜在 Watchkit 应用程序的非常基本的演示 其中一些似乎实现了动画 示例可能是 带有移动秒针甚至分针的钟面 条形图 其中的条形会随着新的实时数据进行动画显示或形状发生变化 圆形进度条 其进度条从零到当前值进行动画处理 到目前
  • [电子邮件受保护] 适用于 iPhone5

    我想更新我的应用程序 以便可以将其部署在 iPhone 5 上 Xcode 4 5 有一个 电子邮件受保护 cdn cgi l email protection这是一个黑色图像 640X1136 在iPhone5的模拟器中 仍然加载旧的 电
  • Rspec等于法

    据我了解 equal 方法检查对象是否相同 person Person create name gt David Person find by name David should equal person 这应该是真的 但这里不是有两个不同