2014-02-22 71 views
0

因此,我最近實現了一些代碼,通過控制器將頁面標題分配給我的應用程序中的頁面。測試應用程序中所有頁面的頁面標題

在控制器:

def index 
    @page_title = "My Awesome Index Page!" 
end 

在主要佈局:

<title><%= @page_title ? "#{@page_title} - Website Name" : "Website Name" %></title> 

的目標是讓網頁的名字,如 「!我真棒索引頁 - 網站名稱」,但是在控制器中未定義@page_title的情況下,它只是默認爲「網站名稱」

現在到了這個問題。這個應用程序有250頁左右的地方。我想要某種自動化的方式來測試所有的頁面,並確保我沒有錯過任何。理想情況下,我希望有一個自動測試,可以打到每一頁,以便在添加未來頁面時,如果未定義@page_title,測試將失敗並提醒我新頁面需要設置page_title。

另外,至少有一種我可以運行的腳本可以在應用中的每個頁面上點擊並返回頁面標題列表或其他內容。這樣我至少可以確保我得到了他們中的每一個。

回答

0

我沒有你的問題的答案,但我使用了不同的方法。

通常最好的做法是一次測試一件事,它必須重要。如果對我來說有一個頁面標題是重要的,我會爲每個標題寫一個測試,所以遵循與Micheal Hartl相同的方法,他的Rails Tutorial

我明確沒有寫250頁只適用於頁面標題然而。但我從來沒有這樣的要求。

0

我的方法是使用I18n,因此您可以在區域設置文件中記錄所有標題/config/locales/titles.yml。它允許您將所有標題分組到一個文件中,從而輕鬆查看您正在做什麼。它還具有保持控制器清潔的優勢。

然後要獲得您的標題,您可以使用controller_nameaction_name值從區域設置文件中檢索文本。包裹在一個輔助方法:

Helper方法

# This is pseudo code, I did not test it, it is only to demonstrate the approach 
# But it should work :) 
def html_title 
    title = I18n.translate! "#{controller_name}.#{action_name}" 
    content_tag :title, title 
end 

titles.yml

en: 
    users: 
    index: 'Here you go with the list of awesome users' 
    show: 'Showing an awesome user record' 

解決方案1:

正如你可以看到我使用I18n.translate!與一聲巨響!,這會如果在您的語言環境文件中找不到翻譯,則引發異常:您忘記定義的每個標題都會引發異常。

至於測試,我會用水豚瀏覽所有頁面,並檢查沒有錯誤。

解決方案2:

如果你不想例外,您可以使用的translate:default選項是這樣的:我不是使用爆炸了

def html_title 
    title = I18n.translate "#{controller_name}.#{action_name}", default: 'My awesome default title' 
    content_tag :title, title 
end 

注意。那麼你的水豚掃描所有的網頁,並確保標題不嚴格等於「我真棒默認的標題」

相關問題