2013-07-01 32 views
1

我目前正在爲我的控制器編寫功能測試,並且我想檢查一行 如何檢查文本是否出現在rails功能測試的頁面上?

這是測試行

出現在我的頁面上。

我嘗試使用

assert_select "p" do 
    assert_select "this is the test line" 
end 

,但我認爲有些事情是錯的這條線。

在rails版本3中這樣做的最好方法是什麼?

+0

請不要不斷更新你的問題的代碼 - 它使Q&A形式土崩瓦解。 –

回答

2

我認爲你只是在尋找:

assert_select "p", "this is the test line" 

更多信息有關assert_selectthe docs

請注意,上面的代碼行依賴於包裝在<p>標記中的文本,並且是文字匹配。如果它在另一個標籤中,則需要指定正確的選擇器。如果你想匹配一個正則表達式,這也支持,通過:

assert_select "p", /test line/ 

請注意,這不會是非常高性能的,因爲它會通過所有<p>的文檔中進行掃描。考慮一個更嚴格指定的選擇器,就像您要定位的元素上的類或ID。

+0

我覺得我的問題是,這個p是一堆div,例如

this is a test line

。 這是否意味着我必須在標籤中指定?像div.div.div.p? – DonDomicci

+1

所以我找到了答案,我在p中添加了一個類,並在assert_select中創建了p.class,然後「字符串」 像魅力一樣工作。 – DonDomicci

1

沒有指定一個標籤:

assert_match "this is the test line", response.body 
相關問題