2011-01-14 9 views
0

Wir arbeiten an einem Controller. Es sieht ein bisschen so aus:Wie kann ich in der Antwort eines Rails-Controllers mit RSpec 2 nach einem XML-Tag suchen?

class ArticlesController < ApplicationController 
    respond_to :xml 

    def show 
    respond_with(Article.find(params[:id])) 
    end 
end 

Wir würden gerne erwarten, dass ein bestimmtes Feld im Ergebnis erscheint. Wir haben versucht, dies zu tun:

require 'spec_helper' 

describe ArticlesController do 
    describe "#show" do 
    let(:article) { Article.create!(:title => "3,527 can't-fail tips to improve your clickthrough rates.") } 
    subject { get :show, :id => article.id; response } 
    it { should have_selector("title", :text => "3,527 can't-fail tips to improve your clickthrough rates.") } 
    end 
end 

bekam aber dies:

Failures: 

    1) ArticlesController#show 
    Failure/Error: it { should have_selector("title", :text => "3,527 can't-fail tips to improve your clickthrough rates.") } 
    NoMethodError: 
     undefined method `has_content?' for #<ActionController::TestResponse:0x00000100e29770> 
    # ./spec/controllers/articles_controller_spec.rb:7:in `block (3 levels) in <top (required)>' 

So have_selector ist nicht richtig. Und have_tag funktioniert auch nicht. Was ist der richtige Weg dies zu schreiben? Versuchen

Antwort

0

es {sollte have_selector ("title",: content => "3527 can not scheitern Tipps, um Ihre Klickraten verbessern")}

+0

Whoops, das war ein Tippfehler. Ich meinte 'have_selector'. Habe gerade verifiziert, dass mir das auch 'NoMethodError' gibt. Ich habe die Frage aktualisiert. – Peeja