ruby-on-rails - rspec 期望日期等于

标签 ruby-on-rails ruby json rspec

我有一个称为工单的对象,它具有以下架构:

# == Schema Information
#
# Table name: work_orders
#
#  id                 :integer          not null, primary key
#  due_on             :date
#  name               :string(255)

我还有对象显示时的 Json 输出:

{
   id: 1,
   due_on: "2015-06-08",
   name: "my work order"
}

我正在尝试使用 rspec 来确认 json 显示的日期与对象的日期匹配。这是我为其他对象做过 50 次的事情......

我有以下内容:

exemplar = FactoryGirl.create(:work_order)
...
puts "Test: #{exemplar.due_on}"
expect(exemplar.name).to      eq(hash['name'])   #This works fine!
expect(exemplar.due_on).to    eq(hash['due_on']) #This blows up...

我得到的输出是:

Test: 2015-06-08

expected: "2015-06-08"
     got: Mon, 08 Jun 2015

我不明白“2015 年 6 月 8 日星期一”的来源。当我用 puts 语句打印出日期时,它显示为 2015-06-08...

最佳答案

Rails 将字符串转换为日期对象。 2015-06-08Date#to_s 的输出:

d = Date.today
#=> Thu, 17 Jul 2014

puts d
#=> 2014-07-17

您可以将日期对象与您的字符串进行比较:

expect(exemplar.due_on.to_s).to eq(hash['due_on'])

或:

expect(exemplar.due_on).to eq(Date.parse(hash['due_on']))

或使用 Active Support Core Extensions :

expect(exemplar.due_on).to eq(hash['due_on'].to_date)

关于ruby-on-rails - rspec 期望日期等于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24809981/

相关文章:

ruby-on-rails - 表单中的第一个参数不能包含 nil 或为空 - Rails 4

ruby-on-rails - Rails 4 强参数 : can I 'exclude' /blacklist attributes instead of permit/whitelist?

ruby-on-rails - 如何确保 Rails Controller 将发布到它的数据处理为 JSON?

sql - 将日期范围参数传递给 Rails 中的 SQL/ActiveRecord 查询

ruby-on-rails - 未定义方法 `to_sym' 为 nil :NilClass after migration

javascript - 有没有办法在直播时从 YouTube API 获取通知

html - 如何根据 Google 跟踪代码管理器中的 div id 为 JSON LD 脚本触发触发器?

ruby-on-rails - 实现类似于 Kijiji 的类别和子类别的最佳方式是什么?

javascript - 如何在jquery对话框中显示JSON数据

python - 通过 JSON 将 Django 数据库查询集传递给 Highcharts