我有一个称为工单的对象,它具有以下架构:
# == 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-08
是 Date#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/