You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby tally方法:如何在Minitest中验证日期键哈希值

正确的Minitest断言写法

问题根源

  1. 你构造的new_date日期错误——要验证的是2024-07-07,但代码里写的是7月8日
  2. 哈希include?方法用法有误,且pluck(:date)返回的实例类型和你构造的Time实例不匹配:如果数据库date字段是纯日期类型,pluck(:date)返回的是Date实例,用Time实例当键自然找不到对应值。

正确写法示例

方式一:直接断言目标日期对应的值

# 构造正确的Date实例(对应2024-07-07)
target_date = Date.new(2024, 7, 7)
# 取出哈希中该日期对应的值,断言等于11
assert_equal 11, Available.all.reload.pluck(:date).tally[target_date]

方式二:先验证键存在,再断言值

如果需要同时确认日期存在且值正确,可以分两步:

target_date = Date.new(2024, 7, 7)
date_tally = Available.all.reload.pluck(:date).tally

assert date_tally.key?(target_date)
assert_equal 11, date_tally[target_date]

特殊情况:数据库字段是datetime类型

如果你的date字段实际是datetime类型,pluck(:date)会返回Time实例,这时要构造匹配时区和时间的Time对象:

# 构造对应日期的Time实例,时区和Rails应用保持一致
target_time = Time.new(2024, 7, 7, 0, 0, 0, Time.zone.offset)
assert_equal 11, Available.all.reload.pluck(:date).tally[target_time]

内容的提问来源于stack exchange,提问作者Jerome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:42:11