rspec - 为什么仅在 ubuntu 上,当它们相同时,使用 assert_equal 进行此属性比较会失败?

2024-04-15

两个测试都失败了——但仅在 Ubuntu(12) 上失败,但在我的(新)Mac 上却失败了。

失败的两个是 Active Record 对象属性比较,但我尽了最大努力来比较它们,例如在命令行创建哈希并粘贴属性,比较表明它们是相同的。

这是一个真正的谜题,因为我们有一个包含数百个测试的广泛测试套件。 Rails 3.2.8,rspec 2.11

Failure/Error: assert_equal @iep_service.attributes, IepService.first.attributes
 MiniTest::Assertion:
   <{"id"=>414,
    "duration"=>30,
    "frequency"=>3,
    "period"=>"week",
    "group_size"=>"group",
    "location"=>nil,
    "service"=>nil,
    "area_of_need"=>"speech",
    "created_at"=>Tue, 09 Oct 2012 01:53:39 UTC +00:00,
    "updated_at"=>Tue, 09 Oct 2012 01:53:39 UTC +00:00,
    "therapist_id"=>nil,
    "start_date"=>nil,
    "end_date"=>nil,
    "student_id"=>469,
    "adhoc"=>false}> expected but was
   <{"id"=>414,
    "duration"=>30,
    "frequency"=>3,
    "period"=>"week",
    "group_size"=>"group",
    "location"=>nil,
    "service"=>nil,
    "area_of_need"=>"speech",
    "created_at"=>Tue, 09 Oct 2012 01:53:39 UTC +00:00,
    "updated_at"=>Tue, 09 Oct 2012 01:53:39 UTC +00:00,
    "therapist_id"=>nil,
    "start_date"=>nil,
    "end_date"=>nil,
    "student_id"=>469,
    "adhoc"=>false}>.
# (eval):2:in `assert_equal'

测试代码:

  context "And a pre-existing Iep Service for one of those students" do
    before(:each) { @iep_service = FactoryGirl.create(:iep_service, :student => @district.students.first) }

    context "And an Iep Service CSV" do
      before(:each) { @spreadsheet = IepServiceSpreadsheet.new(@district, open_spec_fixture_file('sample-ieps.csv')) }

      specify "Prevent importing" do
        # Leave database untouched
        assert_equal 1, IepService.count
        assert_equal @iep_service.attributes, IepService.first.attributes

        # Provide error report
        assert @spreadsheet.error_report.any?
      end 
    end 
  end 

我也尝试过:@iep_service.attributes.should == IepService.first.attributes

but got:

 Failure/Error: @iep_service.attributes.should == IepService.first.attributes
   expected: {"id"=>421, "duration"=>30, "frequency"=>3, "period"=>"week", "group_size"=>"group", "location"=>nil, "service"=>nil, "area_of_need"=>"speech", "created_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "updated_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "therapist_id"=>nil, "start_date"=>nil, "end_date"=>nil, "student_id"=>483, "adhoc"=>false}
        got: {"id"=>421, "duration"=>30, "frequency"=>3, "period"=>"week", "group_size"=>"group", "location"=>nil, "service"=>nil, "area_of_need"=>"speech", "created_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "updated_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "therapist_id"=>nil, "start_date"=>nil, "end_date"=>nil, "student_id"=>483, "adhoc"=>false} (using ==)

有一个很大的差异,包括“检查执行情况”:

      Diff:{"id"=>421, "duration"=>30, "frequency"=>3, "period"=>"week",  
"group_size"=>"group", "location"=>nil, "service"=>nil, "area_of_need"=>"speech",  
"created_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "updated_at"=>Tue, 09 Oct 2012 02:13:51 
UTC +00:00, "therapist_id"=>nil, "start_date"=>nil, "end_date"=>nil, "student_id"=>483, 
"adhoc"=>false}.==({"id"=>421, "duration"=>30, "frequency"=>3, "period"=>"week", 
"group_size"=>"group", "location"=>nil, "service"=>nil, "area_of_need"=>"speech", "created_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "updated_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "therapist_id"=>nil, "start_date"=>nil, "end_date"=>nil, "student_id"=>483, "adhoc"=>false}) returned false even though the diff between {"id"=>421, "duration"=>30, "frequency"=>3, "period"=>"week", "group_size"=>"group", "location"=>nil, "service"=>nil, 
"area_of_need"=>"speech", "created_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, 
"updated_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "therapist_id"=>nil, "start_date"=>nil, 
"end_date"=>nil, "student_id"=>483, "adhoc"=>false} and {"id"=>421, "duration"=>30, 
"frequency"=>3, "period"=>"week", "group_size"=>"group", "location"=>nil, "service"=>nil, 
"area_of_need"=>"speech", "created_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, 
"updated_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "therapist_id"=>nil, "start_date"=>nil, 
"end_date"=>nil, "student_id"=>483, "adhoc"=>false} is empty. 
Check the implementation of 
{"id"=>421, "duration"=>30, "frequency"=>3, "period"=>"week", "group_size"=>"group", 
"location"=>nil, "service"=>nil, "area_of_need"=>"speech", "created_at"=>Tue, 09 Oct 2012 
02:13:51 UTC +00:00, "updated_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, 
"therapist_id"=>nil, "start_date"=>nil, "end_date"=>nil, "student_id"=>483, 
"adhoc"=>false}.==.

没有给出真正的答案,所以我已经迭代了属性,例如

i=0
while i < @student.attributes.count
  assert_equal @student.attributes[i], Student.first.attributes[i]
  i+= 1
end

# Comparing field by field as ruby hash comparison isn't working right - 
# but only on Ubuntu!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rspec - 为什么仅在 ubuntu 上,当它们相同时,使用 assert_equal 进行此属性比较会失败? 的相关文章

  • PHP:类似 Youtube 的短 ID,带有盐

    我需要对数据库 ID 进行编码 加密并将其附加到我的 URL 中 安全性不是我想要解决的问题 但我正在寻找具有中等安全性的东西 主要目标是拥有唯一且 URL 安全的短 ID 下面的代码片段似乎可以满足我的需要 来自http programa
  • Ruby:在each、map、inject、each_with_index 和each_with_object之间进行选择

    许多年前 当我开始编写 Ruby 时 我花了一段时间才理解each https ruby doc org core 2 2 0 Array html method i each and map https ruby doc org core
  • 预计响应的状态代码为 200,但在 rspec 中的请求测试中,状态代码为 302

    我发现其他人发布了很多类似的问题 但没有一个解决方案有效 我的 spec requests questions spec rb 是 require rails helper RSpec describe Questions type req
  • 如何将 #hash 单击添加到元素

    当我打开我的页面时http www mywebsite com http www mywebsite com 我有这个 jQuery 代码 locSlideButton2 click function 我想要 点击locSlideButto
  • Ruby 调试“没有要加载的文件--spec_helper”

    菜鸟可能会错过一些明显的东西 我正在尝试调试 Rspec 文件 此时 Rspec 文件已被删除 require spec helper describe PagesController do render views describe GE
  • 使用 RSPEC 进行测试时突然出现莫名其妙的活动记录连接超时

    这是一个我几乎一无所知的领域 所以提前道歉 我有一套超过 800 个 rspec 测试 当运行整个集合或只是特定的测试文件时 在其中几个之后 例如 20 个左右 尽管它从来不是完全相同的数字 突然且莫名其妙地 每个测试都开始失败并出现相同的
  • 如何声明 RSpec 中示例之间共享的变量?

    假设我有以下规格 describe Thing do it can read data do data get data from file 42 36 expect data count to eq 2 end it can proces
  • 使用未定义常量 CRYPT_SHA512

    我使用一个 php 脚本 该脚本使用 php 的 crypt 并使用 SHA512 对密码进行哈希处理 但是当我尝试检查 SHA512 是否已设置时 出现上述错误 当然我知道为什么我会收到这个错误 php 缺少一些依赖项 我只是不知道这种依
  • 如何从 PHP 字符串中获取 64 位整数哈希值?

    我需要 64 位字符串整数哈希值来实现哈希映射之类的功能 在我看来 没有可以返回 64 位整数的原生 PHP 哈希功能 我认为可以获取 sha1 哈希值的第一部分并将其转换为整数 然而 这不会带来最好的性能 而且转换似乎很棘手 当然 如果不
  • 什么整数哈希函数可以接受整数哈希键?

    什么整数哈希函数可以接受整数哈希键 我发现以下算法提供了非常好的统计分布 每个输入位以大约 50 的概率影响每个输出位 不存在冲突 每个输入都会产生不同的输出 除非 CPU 没有内置整数乘法单元 否则该算法速度很快 C 代码 假设int是
  • Railstutorial.org - 未定义的方法“工厂”

    我正在尝试关注 Railstutorial org 目前正在阅读第 7 章 您将在其中开始使用工厂 http railstutorial org chapters modeling and viewing users two sec tes
  • C# 如何计算出对象的哈希码?

    这个问题来自于讨论tuples https stackoverflow com questions 101825 whats the best way of using a pair triple etc of values as one
  • 无法使用数组作为 Ruby Hash 的默认值? [复制]

    这个问题在这里已经有答案了 我正在向哈希键添加项目 我期望得到这样的结构 a 1 b 2 3 4 我使用数组来初始化哈希 irb gt hash Hash new gt 然后开始使用它 irb gt hash a lt lt 1 gt 1
  • rspec 中的相关测试

    我编写功能测试 并且我需要进行的测试取决于之前测试的通过情况 假设我有一个按钮 可以打开一个窗口 其中有一个功能 也就是说 为了检查此功能 我需要首先检查按钮的正确操作 即打开窗口或不起作用 因此 我需要这样做 如果单击按钮时测试失败 则测
  • OpenCV的calcOpticalFlowPyrLK抛出异常

    一段时间以来 我一直在尝试使用 OpenCV 构建一个小型光流示例 除了函数调用 calcOpticalFlowPyrLK 之外 一切正常 该函数在控制台窗口中打印以下失败的断言 OpenCV错误 断言失败 mytype typ0 CV M
  • Ruby 中判断变量是哈希还是数组的优雅方法是什么?

    检查什么 some var是 我正在做一个 if some var class to s Hash 我确信有一种更优雅的方法来检查是否 some var is a Hash or an Array 你可以这样做 some var class
  • 如何在 rspec 请求规范中设置请求标头?

    在控制器规范中 我可以像这样设置 http 接受标头 request accept application json 但在请求规范中 请求 对象为零 那么我在这里该怎么做呢 我想将 http 接受标头设置为 json 的原因是这样我可以这样
  • 为什么数组前需要加星号?

    我不知道这是哈希问题还是数组问题 但我不明白为什么第三个示例中需要星号 才能获得填充数据的哈希 如果没有它 它会输出一个空的哈希值 coding utf 8 require pp pp first name Shane last name
  • java中带有二维键的映射

    我想要一个在 Java 中由两个键索引的映射 在其中使用两个键放置和检索值的映射 需要明确的是 我正在寻找以下行为 map put key1 key2 value map get key1 key2 returns value map ge
  • RSpec 中出现意外的 nil 变量

    我有一个非常基本的 RSpec 示例 但不起作用 这是代码 require spec helper describe Referral type functionality do describe Affiliate system do b

随机推荐

  • 比特率 JWplayer

    我无法让 jwplayer 以不同的比特率工作 对于每个视频 我都会创建具有不同后缀且比特率较低的新输出文件 例如 输出1 高比特率 test original mp4 输出 2 中等比特率 test medium mp4 输出 2 低比特
  • 如何列出 Git 存储库中的目录以及每个目录条目的最新提交信息?

    我想列出 Git 存储库中的目录以及每个目录条目的最新提交信息 类似于 GitHub 如何显示目录或 viewvc 如何显示 SVN CVS 存储库中的目录 目前我这样做 获取目录条目git ls tree master并从输出中解析目录结
  • 如何在 JavaScript 的“if”语句中指定多个条件[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 这是我试图提及两个条件的方式如果这个或这个 但它不起作用 if Type 2 PageCount 0 Type 2 PageCou
  • 单击 RecyclerView 转到另一个包含 android 中数据的活动

    我正在使用 RecyclerVeiw 显示一些图像 单击它应该启动新活动 显示 RecyclerView 的 id 名称 我实现了代码 但它现在可以工作 但不可点击 下面是我的适配器 import android content Conte
  • 将 PEM 公钥读取到 iOS 中

    我有一个由 java 使用以下代码生成的 base64 公钥 RSAPublicKeySpec rsaKS new RSAPublicKeySpec modulus pubExponent RSAPublicKey rsaPubKey RS
  • java中通过POST方法发送Xml字符串

    我想通过 POST 方法将 xml 字符串传递到 URL 我尝试了下面的代码片段 但它没有返回任何内容 disableCertificateValidation String url https url https Properties s
  • 什么是“void(*old_sigint_handler)(int)”?

    这是一个语法问题 我遇到了这条线 void old sigint handler int 我不知道它在做什么 看起来像是没有变量名的三种类型的串联 我希望得到澄清 void old sigint handler int 这定义了old si
  • 线程模拟的多级使用

    我对一些很久以前编写的进行线程级模拟和进程生成的类遇到了一些问题 问题似乎是我对这些实用程序类的使用超出了其他人尝试使用它们所做的事情 第一个通过使用 OpenThreadToken 和 DuplicateToken 以及 Imperson
  • 从远程应用程序服务器连接到 Websphere Liberty jmsServer

    是否可以从远程应用程序服务器连接到部署在 Websphere Liberty 中的队列 我使用该产品的免费版本 Liberty 8 5 5 7 我在 server xml 中配置了连接工厂
  • 使用node.js和backbone.js进行模板渲染

    有没有人找到一个好的解决方案来开发可在服务器和客户端上使用的backbone js模板 这对于backbone js历史堆栈来说是非常理想的 因为用户可以在浏览器位置栏中共享和链接到真实的url 并且node js服务器可以在第一个页面视图
  • Android:旋转动画完成动画后恢复到真实状态?

    我将在 我的应用程序 中旋转图像 旋转一切正常 但是 当我旋转动画完成时 图像将返回到其先前的位置 我想要的是将图像保持在旋转状态 而不是让它回到真实状态 那么怎样才能让它成为可能呢 要旋转图像 我使用以下代码
  • 在应用程序中嵌入 C++ 编译器

    着色器不是很酷吗 您可以只输入一个纯字符串 只要它是有效的源 它就会编译 链接和执行 我想知道是否有一种方法可以将 GCC 嵌入到用户应用程序中 以便它 自给自足 例如具有编译与其自身兼容的本机二进制文件的内部功能 到目前为止 我一直在从应
  • 构建不使用 CRT 函数的 Visual C++ 应用程序仍然引用一些

    这是至少两个密切相关但又截然不同的一系列问题的一部分 我希望通过分别询问他们来做正确的事情 我正在尝试让我的 Visual C 2008 应用程序在没有 C 运行时库的情况下运行 它是一个 Win32 GUI 应用程序 没有 MFC 或其他
  • 为什么使用关键字或符号作为函数从地图中查找值有效?

    引用自Clojure 的乐趣 第 4 3 1 节 由于关键字是自我评估的并提供快速的相等性检查 因此它们几乎总是在映射键的上下文中使用 使用关键字作为映射键的一个同样重要的原因是它们可以用作函数 以映射作为参数来执行值查找 def popu
  • 理解 JS Promise

    我想更深入地了解 Promise 内部是如何工作的 因此我有一些示例代码 var p1 new Promise function resolve reject window setTimeout function resolve res c
  • 核心显卡圆形图像模糊

    我正在使用核心图形绘制圆形图像 并对其进行修改后的实现所以答案 https stackoverflow com a 18664917 1369331 这是我的来源 UIImage circularImageWithRadius CGFloa
  • Spring security 有 SimpleGrantedAuthority 但 hasRole 不起作用

    我有以下代码 private static Collection
  • 为什么 jspService() 不能被重写?

    为什么不能jspService 方法被重写 其中jspInit and jspDestroy 可以被覆盖吗 This 论坛帖子 http www geekinterview com question details 23904解释了为什么不
  • 如何使用具有 BASIC 身份验证的 Service Worker(NTLM、协商)

    我一直在尝试在 IIS 托管网站中使用服务工作线程来缓存该网站的一些静态内容 该站点是使用 Windows 身份验证的内部应用程序 我已经能够注册并运行服务工作线程 没有太多麻烦 但是一旦我打开缓存并开始向缓存添加文件 承诺就会因授权失败而
  • rspec - 为什么仅在 ubuntu 上,当它们相同时,使用 assert_equal 进行此属性比较会失败?

    两个测试都失败了 但仅在 Ubuntu 12 上失败 但在我的 新 Mac 上却失败了 失败的两个是 Active Record 对象属性比较 但我尽了最大努力来比较它们 例如在命令行创建哈希并粘贴属性 比较表明它们是相同的 这是一个真正的