Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用RSpec时Rails DateTime中的随机空间?_Ruby On Rails_Rspec - Fatal编程技术网

Ruby on rails 使用RSpec时Rails DateTime中的随机空间?

Ruby on rails 使用RSpec时Rails DateTime中的随机空间?,ruby-on-rails,rspec,Ruby On Rails,Rspec,我的事件模型中有一个方法: 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.shou

我的事件模型中有一个方法:

  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代码?

您正在使用%e format指令,该指令用于月份的空白填充日。听起来您需要未添加的月日指令,即%-d

您正在使用%e格式指令,该指令用于月份的空白填充日。听起来您需要未添加的月日指令,即%-d

测试失败的原因是中的%e指令是:

%e-月日,空白填充1..31

因此,语句DateTime.parse1/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

测试失败的原因是中的%e指令是:

%e-月日,空白填充1..31

因此,语句DateTime.parse1/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

+1,但我接受了@Mori,因为他引导我找到了%-e,这是我所追求的。+1,但我接受了@Mori,因为他引导我找到了%-e,这是我所追求的。