2012-01-14 38 views
1

我想測試一個鏈接的劑量存在於頁面上, 我試圖檢查所有包含的鏈接標籤一樣,嵌套的標籤:水豚和Rails,爲什麼我的鏈接預計會返回一些東西?

response.body.should have_selector("div.page_margins div.page div#nav div.hlist ul li#2") 

並正確傳遞,但是,如果我加入鏈接標籤的測試是這樣的:

response.body.should have_selector("div.page_margins div.page div#nav div.hlist ul li#2 a",:text => "Next") 

我得到的錯誤:

expected css "div.page_margins div.page div#nav div.hlist ul li#2 a#next_page" with text "Next" to return something

如果我有這樣的have_link測試:

response.body.should have_link("div.page_margins div.page div#nav div.hlist ul li#2 a#next_page") 

我得到的錯誤:

expected link "div.page_margins div.page div#nav div.hlist ul li#2 a#next_page" to return something

任何機構可以幫助嗎?我愛軌,但是,我仍然需要一個手測試相處..

編輯

這裏是page.html中,我注意到,在content_for的HTML中的鏈接渲染未呈現收益率

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta content="text/html; charset=utf-8" http-equiv="Content-type"> 
<title></title> 
<script src="/assets/application.js" type="text/javascript"></script><link href="/assets/application.css" media="screen" rel="stylesheet" type="text/css"> 
<script type="text/javascript"> 
//<![CDATA[ 
var auto_log_off = false; 
//]]> 
</script><script type="text/javascript"> 
//<![CDATA[ 
var student_logged = false; 
//]]> 
</script><script src="/assets/sessions.js" type="text/javascript"></script><!-- add your meta tags here --><link href="/assets/application_yaml/css/my_layout.css" rel="stylesheet" type="text/css"> 
<!--[if lte IE 7]> <![endif]--><link href="/assets/application_yaml/css/patch_my_layout.css" rel="stylesheet" type="text/css"> 
</head> 
<body> 
<div class="page_margins"> 
<a href="#dialog" name="modal"></a> 
<div id="topnav"> 
<!-- start: skip link navigation --> 
<a class="skip" href="#navigation" title="skip link">Skip to the navigation</a> 
<span class="hideme">.</span> 
<a class="skip" href="#content" title="skip link">Skip to the content</a> 
<span class="hideme">.</span> 
<!-- end: skip link navigation --> 
</div> 
<!-- start: skip link navigation --> 
<!-- end: skip link navigation --> 
<div class="page"> 
<div id="header"> 
<h1>Welcome to course builder!!</h1> 
<p><a href="/" id="home_link">Home</a></p> 
</div> 
<div id="nav"> 
<!-- skiplink anchor: navigation --> 
<a id="navigation" name="navigation"></a> 
<div class="hlist"> 
<!-- main navigation: horizontal list --> 

<div class="quiz_review_buttons"> 

<!-- 
<ul> 
<li class="active"><strong>Button 1</strong></li> 
<li><a href="#">Button 2</a></li> 
<li><a href="#">Button 3</a></li> 
</ul> 
--> 
</div> 
<!-- <ul> --> 
<!-- <li class="active"><strong>Button 1</strong></li> --> 
<!-- <li><a href="#">Button 2</a></li> --> 
<!-- <li><a href="#">Button 3</a></li> --> 
<!-- <li><a href="#">Button 4</a></li> --> 
<!-- <li><a href="#">Button 5</a></li> --> 
<!-- </ul> --> 
</div> 
</div> 
<div id="main"> 
<div id="col1"> 
<div class="clearfix" id="col1_content"> 
<!-- add your content here --> 

<div class="debug_div"> 
<p> 
<b> 
devise/sessions#new 
</b> 
</p> 
</div> 
</div> 
</div> 
<div id="col3"> 
<div class="clearfix" id="col3_content"> 
<!-- add your content here --> 
<div class="alert" id="notice_alert">You need to sign in or sign up before continuing.</div> 
<script type="text/javascript"></script><!-- <div style="clear:both"></div> --><h2>Sign in for student</h2> 

<form accept-charset="UTF-8" action="/students/sign_in" class="student_new" id="student_new" method="post"> 
<div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"></div> 
    <div> 
<label for="student_email">Email</label><br><input id="student_email" name="student[email]" size="30" type="email" value=""> 
</div> 

    <div> 
<label for="student_password">Password</label><br><input id="student_password" name="student[password]" size="30" type="password"> 
</div> 

    <div> 
<input name="student[remember_me]" type="hidden" value="0"><input id="student_remember_me" name="student[remember_me]" type="checkbox" value="1"><label for="student_remember_me">Remember me</label> 
</div> 

    <div><input name="commit" type="submit" value="Sign in"></div> 
</form> 

    <a href="/students/sign_up">Sign up</a><br><a href="/students/password/new">Forgot your password?</a><br> 
</div> 
<!-- IE Column Clearing --> 
<div id="ie_clearing"> </div> 
</div> 
</div> 
<div id="footer"> 
Layout based on 
<a href="http://www.yaml.de/">YAML</a> 
</div> 
</div> 
</div> 
</body> 
</html> 

回答

0

另外,在控制器規格中,確保在檢查標記時調用render_views。 。

2

「預計會返回某些東西」意味着水豚無法找到它正在尋找的元素。很難說爲什麼沒有看到水豚正在搜索的HTML

請注意,have_link的參數不是一個CSS選擇器,它應該是鏈接的文本,ID,標題或圖像ALT屬性。

+0

作爲該水豚被搜索HTML,它的這個路徑中: div.page_margins div.page股利#導航div.hlist UL李#2 怎麼來的水豚是能夠找到李#2以上,但可以」在li#2裏找到'a'? response.body.should have_selector(「div.page_margins div.page div#nav div.hlist ul li#2」)正常工作,這導致我正在測試的鏈接的父母 是否存在有關搜索的限制在水豚的鏈接?最大嵌套深度? – simo 2012-01-15 07:29:59

+0

我注意到page.html中沒有包含通過content_for呈現的html,因此,Capybara無法找到鏈接,因爲它在content_for html中,所以,任何想法?我在上面添加了一個編輯,向您顯示帶有空收益的page.html – simo 2012-01-16 04:50:59

相關問題