在用Minitest测试rails方法时,有以下语句
Available.all.reload.pluck(:date).tally
返回以下哈希值
{Sat, 08 Jun 2024=>2, Tue, 25 Jun 2024=>12, Sun, 07 Jul 2024=>11}
正在尝试的断言是在数据转换后,验证日期键的值
2024-07-07
== 11。Time
的实例,则返回 false;new_date = DateTime.new(2024,7,8,0,0,0).to_time
assert Available.all.reload.pluck(:date).tally.include?({new_date=>11})
这应该怎么写?
我首先推荐的是
Available.all.reload.pluck(:date).tally
相当于
Available.group(:date).count
这将计数转移到数据库并避免创建中间处置的
Array
其次,您可以使用
Date
创建一个 Date.new(2024,7,7)
对象。
由于我们使用
Hash
进行比较,我会选择
Available.group(:date).count[Date.new(2024,7,7)] == 11
也就是说,如果目标始终是单个
Date
并且 Hash
不是必需的,那么这样的方法可能会更有效:
Available.where(date: Date.new(2024,7,7)).count == 11