[英]Random space in Rails DateTime when using RSpec?
我的Event模型中有一个方法:
def when
self.starts_at.strftime("%a %b %e @ %-I:%M")
end
在rails控制台或网页上正确输出。
但是,像这样进行rspec测试:
it "has simple date display" do
game = FactoryGirl.build(:event, starts_at: DateTime.parse("1/1/2014 3:30pm"))
game.when.should == "Wed Jan 1 @ 3:30"
end
失败,因为:
1) Event has simple date display
Failure/Error: event.when.should == "Wed Jan 1 @ 3:30"
expected: "Wed Jan 1 @ 3:30"
got: "Wed Jan 1 @ 3:30" (using ==)
为什么我的格式化DateTime中有一个随机空间? 是否应该为测试和控制台加载/运行相同的DateTime代码?
您正在使用%e
格式指令,该指令适用于每月填空的日期。 听起来你想要月份指令的未填充日期,即%-d
。 这是文档 。
测试失败的原因是因为strftime
的%e
指令是:
%e - 每月的日期,空白填充(1..31)
所以语句DateTime.parse("1/1/2014 3:30pm").strftime("%a %b %e @ %-I:%M")
Wed Jan 1 @ 3:30
DateTime.parse("1/1/2014 3:30pm").strftime("%a %b %e @ %-I:%M")
产生Wed Jan 1 @ 3:30
(前面有额外的空格)在1到9之间的几天。
您可以使用%d
指令代替,该指令给出了月填充,零填充。 例如
# Event model
def when
self.starts_at.strftime("%a %b %d @ %-I:%M")
end
然后在你的规范中:
it "has simple date display" do
game = FactoryGirl.build(:event, starts_at: DateTime.parse("1/1/2014 3:30pm"))
game.when.should == "Wed Jan 01 @ 3:30"
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.