比较浮点数组时 rspec 测试的舍入问题

2023-12-28

我想检查一种方法的结果:

 result.should  == [1.0,2.0,3.0]

但我收到一个错误:

   expected: [1.0, 2.0, 3.0]
        got: [1.0, 2.0, 3.0] (using ==)

我认为问题在于四舍五入,但我不知道如何比较它们,例如偏差为0.1。

谢谢你,呼吸。 我写了自己的匹配器,如果它对某人有帮助:

RSpec::Matchers.define :be_closed_array do |expected, truth|
  match do |actual|
    same = 0
    for i in 0..actual.length-1
      same +=1 if actual[i].round(truth) == expected[i].round(truth)
    end
    same == actual.length
  end

  failure_message_for_should do |actual|
    "expected that #{actual} would be close to #{expected}"
  end

  failure_message_for_should_not do |actual|
    "expected that #{actual} would not be close to #{expected}"
  end

  description do
    "be a close to #{expected}"
  end
end

使用(已弃用)2.7.0 https://github.com/rspec/rspec-expectations/commit/4638609046a120c86d48a0253b471db55a5fd441#diff-a26c79378299c0868d0462d2000c54e204e9b854f1dd772c05e7deb588033ff0R3,删除于3.0.0 https://github.com/rspec/rspec-expectations/commit/a00be5b15dacfae7aa0be68fdd4ccd1ebd2ddf1a#diff-4ac680eeaffa2461320261649ec69d2b543331a37dc7ac88c33de1f77163293c):

 .should be_close

Or even:

 .should be_within

参考这里http://rubydoc.info/gems/rspec-expectations/2.4.0/RSpec/Matchers http://rubydoc.info/gems/rspec-expectations/2.4.0/RSpec/Matchers

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

比较浮点数组时 rspec 测试的舍入问题 的相关文章

  • 关于空 own_to 关联的最佳实践

    想象一下以下情况 我有一个dog模型和一个house模型 一只狗可以属于一个房子 一个房子可以有很多只狗 所以 Class Dog lt ActiveRecord Base belongs to house end Class House
  • Ruby Time.parse 给我超出范围的错误

    我正在使用 Time parse 从字符串创建 Time 对象 因为某些原因 Time parse 05 14 2009 19 00 导致参数超出范围错误 而 Time parse 05 07 2009 19 00 does not 有任何
  • SESSION 中存储的数组后面出现数字

    我正在对存储在会话变量上的数组执行 print r 由于某种未知的原因 它在数组打印后添加了一个数字 Example Array 0 gt 868 userid gt 868 1 如果我直接在函数本身中执行 print r 并且在变量存储在
  • 使用不同的阈值替换多列中的值

    我有一个包含多个列的数据集 其中包含我想要转换为二进制的定量数据 为此 我想使用每列不同的阈值 Example Input antigen1 antigen2 antigen3 antigen4 1 215 421 2 12 2 1524
  • JQuery 验证表单数组中的重复项

    我想显示重复或不唯一的值的错误 但我的表单接受输入数组 我已经在 jsfiddle 上检查了这些问题 name week 失败但是name week 工作正常 问题1 https stackoverflow com questions 24
  • shell 脚本中数组的最大元素及其索引

    如何在 shell 脚本中从数组中找到最大元素及其索引 我有一个数组 a 2 2116565098 2 1238242060 2 1747941240 2 3201010162 2 3677779871 1 8126464132 2 124
  • Rails 3.1 中的嵌套表单

    我在嵌套表单方面遇到问题 rails 3 1 在应该渲染 fields for 块时不渲染 fields for 块 例如 在编辑现有记录时 由于我对自己的英语不够自信 我制作了一个小示例应用程序 新行动 def new manga Man
  • 如何使用 jQuery 获取数组键?

    下午好 我有一个数组 其中包含一些键和值 然后我需要获取数组键而不是其中的数据 我想用 jQuery 来做到这一点 例如 我知道 PHP 有一个名为 array keys 的函数 它将数组作为参数 并返回一个数组 其中包含每个索引中的每个键
  • Rails 中带有 text_field 的逗号分隔数组

    我有一些users可以有很多posts 并且每个帖子都可以有很多tags 我已经使用一个实现了拥有并属于许多帖子和标签之间的关系 创建新帖子时 用户可以使用逗号分隔的值列表对其进行标记 就像在 SO 上发布新问题时一样 如果任何标签尚不存在
  • Delayed_job不会运行用户定义的方法

    我一直在尝试让 DelayedJob 在后台运行一些用户定义的方法 对于这个测试用例 我在助手中定义了以下方法 def test case u User new u first name JimBob u last name joe u e
  • Ruby on Rails - 复选框未保存到数据库?

    我有一个迁移 它使用布尔值并在其视图中生成一个复选框 但是 无论我单击什么 保存到数据库的值都不会受到影响 我的迁移看起来像这样 def self up create table blogposts do t t string title
  • 如何将非并行junit参数化测试转变为并行运行

    我编写了一个参数化的junit测试 有没有任何内置方法可以使其并行运行 任何 annoation例如 如果没有 我唯一的方法就是手动编写 你会如何管理junit java中的线程池 图书馆JUnit工具箱 https github com
  • 部署到 Heroku 时出现“rake 中止!堆栈级别太深”

    我的网站曾经运行正常 Heroku 预编译了资产和所有内容 现在 似乎不知从何而来 我开始在部署时收到此消息 Preparing app for Rails asset pipeline Running rake assets precom
  • 比较两个字符串ArrayList

    我有两个数组列表 dim Colors1 New ArrayList Colors1 Add Blue Colors1 Add Red Colors1 Add Yellow Colors1 Add Green Colors1 Add Pur
  • 查找数组中多个最大值的索引

    我有一个示例数组 var arr 10 67 100 100 我想找到数组中最大值的索引 该函数仅查找一个索引 function max arr var max arr 0 var maxIndex 0 for var i 1 i lt a
  • 如何使用Gson将JSONArray转换为List?

    在我的 Android 项目中 我试图将收到的 JSONArray 转换为列表 在 的帮助下这个答案 https stackoverflow com questions 8371274 how to parse json array in
  • 寻找在 Ruby on Rails 中构建安全 REST API 的建议

    我正开始为我正在从事的项目构建 REST API 这促使我对使用 RoR 构建 API 的最佳方法进行了一些研究 我很快发现 默认情况下 模型是向世界开放的 只需在 URL 末尾添加 xml 并传递适当的参数即可通过 URL 进行调用 那么
  • Rspec 通过 mTurk 测试实时结果

    我正在通过 Rspec 测试代码在 mTurk 上创建点击 但同时我需要测试必须从 mTurk 发回的结果 为了节省每次测试的复杂性 我使用 VCR 将 HTTP 请求记录在盒式磁带中 我该如何实施这个测试 好吧 我为此做了一些修改 我使用
  • 在 Jasmine 测试中配置 Angular 服务提供者

    我的服务有someModule module someModule provider someService function this options this get function return options 我正在编写规范 到目
  • Python 中的 C 指针算术

    我正在尝试将一个简单的 C 程序转换为 Python 但由于我对 C 和 Python 都一无所知 这对我来说很困难 我被 C 指针困住了 有一个函数采用 unsigned long int 指针并将其值添加到 while 循环中的某些变量

随机推荐

  • Spring中使用@Valid验证表单不起作用

    我想验证我的表单 但这不起作用 我的实体类 import java io Serializable import java util Set import javax persistence Column import javax pers
  • 在 Dart 编程时如何为 VSCode 中的类型着色并添加样式

    在 Dart 中编程时 我想在 VSCode 中更改声明类型的颜色 并可能添加粗体 斜体和其他样式 这可能吗 我认为这将有助于可读性 例如 我希望 Widget BuildContext 和 Loading Container 采用不同的颜
  • 大 O 包含两个相乘的变量

    如果我采用该功能 def nested multiplier a b returns a b count 0 for i in range a for j in range b count 1 return count 这里相当清楚的是 就
  • 直接继承 Trait 失败,但代理有效

    为什么添加代理特征有效而直接继承失败 我在 github 上创建了一个可运行的项目 https github com leftofnull so inheritance 如果您克隆存储库并运行sbt console其次是com stacko
  • Docker 构建陷入 npm run 构建步骤

    我试图创建一个 docker 映像 但它卡在 npm run build 步骤中 我可以看到构建成功完成的消息 但它没有继续进行下一步 在 docker 文件下面 我使用节点 16 13 1 作为基础图像 RUN mkdir p usr s
  • Python3 从同级目录导入模块

    对于 python 3 10 项目中的新结构 我必须将不同的模块彼此分开 并将它们移动到同一层的不同文件夹中 文件夹结构看起来有点类似于 Root main py init py folder1 init py a py folder2 i
  • WPF自定义DatagridColumn绑定问题

    我试图为数据网格定义一个新的列模板 我可以在我的应用程序中重复使用它 但是当我尝试使用它时 我得到 System Windows Data 错误 2 找不到管理 FrameworkElement 或 FrameworkContentElem
  • 在外部 JavaScript 中使用 django 模板标签

    我在 html 页面中包含了一个 js 文件 例如 application js 但我无法在该 js 文件中使用 django 模板标签 有什么方法可以直接在外部 js 文件中使用 django 模板标签吗 前提是你会像模板一样解析 JS
  • JS setTimeout() 替代方案

    就像我解释的那样here http blog mlefree com 2016 02 settimeout alternative as happy new html 我不能再使用 window setTimeout 和任何窗口经典函数 如
  • 使用使用 Vue-CLI 创建的应用程序提供 404 页面

    我正在使用 Vue CLI 创建 Vue 应用程序 我不喜欢的一种行为是任何不存在的 URL 例如 localhost 8080 nonexistent file html 得到服务 代码为 200 就好像它是根一样 localhost 8
  • 更改 git merge 的相似性索引阈值并涉及重命名(例如 diff 上的 -M[n] --find-renames[=n] )

    我们有一些用于重命名检测启发式的配置选项diff log show and merge diff renameLimit执行复制 重命名检测时要考虑的文件数量 相当于 git diff 选项 l 差异重命名告诉 git 检测重命名 如果设置
  • 如何减少RadioButton绑定代码?

    我正在跟进这个答案关于如何将枚举 在我的例子中是整数 数据绑定到RadioButtons https stackoverflow com a 2908885 171121 但是如果我有几个 TabItems 每个 TabItems 都有 1
  • 如何在代码后面设置DataGrid行的背景颜色?

    我创建一个DataGrid我的代码后面的对象并设置内容obj ItemsSource 现在我想在后面的代码中设置特定行的背景颜色 我怎样才能实现这个目标 Update 我创建了DataGrid后面代码中的对象如下 var dataGrid
  • Java 归并排序

    我正在尝试创建一个合并排序方法 但它不断给出错误的排序 我在哪里可以更改以使其真正对数组进行排序 代码的哪一部分必须不同 感谢您的时间 public static void mergeSort int array int left int
  • 使用 django 测试客户端发送 JSON

    我正在开发一个 django 项目 它将作为 webhook 的端点 Webhook 会将一些 JSON 数据发布到我的端点 然后端点将解析该数据 我正在尝试为其编写单元测试 但我不确定是否正确发送了 JSON 我在管道端点中不断收到 Ty
  • Netbeans 和 C++ 安装

    我在使用 Netbeans 7 4 和 Cygwin 4 x 编译 C 程序时遇到了一个小问题 我已经完成了 netbeans 教程中的所有操作 我已经安装了 gcc gdb g 和 make 编译器 Netbeans 属性中的每条路径都已
  • Java FTP 的服务器端实现

    我想建立一个后台没有实际文件的FTP服务器 相反 我希望上传到它的文件立即由我的后端处理 上传目录的文件列表应包含尚未处理的文件 删除或移动应该是不可能的 另外 在下载方面 我想展示我能够提供的那些文件 但文件应根据需要再次由后端创建 由于
  • 为什么 JSP 不支持表单上的“put”方法?有没有办法在jsp表单上使用put方法? [复制]

    这个问题在这里已经有答案了 我正在尝试实施putJSP形式的方法 但似乎是支持的 背后的原因是什么 如果我使用 HTML 而不是 JSP 并调用实现的 servlet 来接受 put 请求 那么它会按预期工作 但相同的代码不能在 JSP 上
  • Flask-Security user_registered 信号在 Python 3.3 中未收到,但在 2.7 中有效

    我正在尝试使用 user registered 信号 以便在用户使用 Flask security 注册时为用户设置默认角色 如下链接所示 在 Flask 安全性中设置默认角色 https stackoverflow com questio
  • 比较浮点数组时 rspec 测试的舍入问题

    我想检查一种方法的结果 result should 1 0 2 0 3 0 但我收到一个错误 expected 1 0 2 0 3 0 got 1 0 2 0 3 0 using 我认为问题在于四舍五入 但我不知道如何比较它们 例如偏差为0