I''m specing some xhtml (which I don''t normally do, so forgive me if this is basic). I''ve got the following spec: it "should build xhtml form pieces" do @captcha.should_receive(:request_image).and_return @image @captcha.vidoop_captcha().should have_tag "div.captcha" do with_tag "img[src=http://api.vidoop.com/vs/captchas/cpt123/image ]" with_tag "input[type=hidden][name=captcha_id]" with_tag "input[name=captcha]" end end @captcha.vidoop_captcha is returning the following html: <div class="captcha"><input value="cpt123" name="captcha_id"/><image src="http://api.vidoop.com/vs/captchas/cpt123/image" alt="VidoopSecure Captcha Image"/><div class="instructions"><p>foo bar</p><input type="text" autocomplete="off" maxlength="2" name="captcha" id="captcha"/></div></div> And my error is: ''Vidoop::Captcha::Helper rendering a catpcha should build xhtml form pieces'' FAILED Expected at least 1 element matching "img[src=''http://api.vidoop.com/vs/captchas/cpt123/image'' ]", found 0. <false> is not true. I''ve tried with_tag as simple as "img" but even that isn''t matching. The rest of the spec passes. Any ideas? Thanks, BJ Clark
BJ Clark wrote:> I''m specing some xhtml (which I don''t normally do, so forgive me if this > is basic). > > I''ve got the following spec: > > it "should build xhtml form pieces" do > @captcha.should_receive(:request_image).and_return @image > @captcha.vidoop_captcha().should have_tag "div.captcha" do > with_tag > "img[src=http://api.vidoop.com/vs/captchas/cpt123/image]" > with_tag "input[type=hidden][name=captcha_id]" > with_tag "input[name=captcha]" > end > endI suspect the XPath predicate should be [@name=''captcha''], but I don''t know with_tag shortcuts. You might also try (>cough<) my assert_xhtml: @captcha.vidoop_captcha().should be_html_with{ div :id => :captcha do img :src => ''http://api.vidoop.com/vs/captchas/cpt123/image'' input :type => :hidden, :name => :captcha_id input :name => :captcha end end I invented it specifically to solve the verbosity problem you encountered. gem install nokogiri assert2, and require ''assert2/xhtml''. If it fails, it prints out the HTML pattern it sought, and the sample HTML from your production code. -- Phlip