2011-05-25 37 views
4

我是Ruby/Rails/RSpec的全新軟件,希望這是一個愚蠢/簡單的問題。我目前正在爲我們當前的項目編寫RSpec測試。我目前正在做的事情包括編寫一個測試來顯示頁面上的最後登錄時間/日期。試圖在RSpec中使用正則表達式have_selector line

我想要做的只是測試日期/時間是否以我們想要的格式存在。我正在使用正則表達式來檢查格式。我創建的正則表達式,然後嘗試使用應該have_selector線所示(請原諒醜陋的正則表達式) -

it "should display last login date and time" do 
    date_time_regex = /Last Login: [0-9][0-9]-[0-9][0-9]-[0-9][0-9], [0-9][0-9]:[0-9[0-9]]/ 
    visit root_path 
    response.should have_selector("date_time", :content => date_time_regex) 
end 

當我嘗試運行測試,我得到以下錯誤 -

1) LayoutLinks when signed in should display last login date and time 
Failure/Error: response.should have_selector("date_time", :content => date_time_regex) 
NoMethodError: 
    undefined method `include?' for #<Regexp:0xef2a40> 
# ./layout_links_spec.rb:60:in `block (3 levels) in <top (required)>' 

所以它看起來像我不能通過正則表達式,但我不知道接下來要做什麼?預先感謝任何幫助!

回答

7
date_time_regex = /Last Login: [0-9][0-9]-[0-9][0-9]-[0-9][0-9], [0-9][0-9]:[0-9[0-9]]/ 

response.should have_selector('data_time') do |data_time| 
    data_time.should contain(date_time_regex) 
end 

或...

response.should have_selector('data_time') do |data_time| 
    data_time.should =~ date_time_regex 
end 
+0

還是不太確定我關注 - 你的意思是使用'response.should =〜date_time_regex'還是別的? – Will 2011-05-27 14:55:21

+0

沒關係,得到了這個工作 - 謝謝! – Will 2011-06-01 15:57:49

4

一兩件事,這將有助於你的是,你可以做\d而不是[0-9]。所以你然後得到

/Last Login: \d\d-\d\d-\d\d, \d\d:\d\d/ 

這是一個更具可讀性。