簡體   English   中英

使用RSpec時Rails DateTime中的隨機空間?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM