2016-07-31 9 views
0

Ich habe einen Schienen-Helfer, die ein FormularWarum schlägt have_selector "#MyId" fehl, wenn Übereinstimmung/ID = "MyId "/besteht?

#helpers/my_helper.rb 
def build_form 
    form_for object, url: object_path, method: :post do |f| 
    html = f.text_input :field 
    html += f.submit 
    html.html_safe 
    end 
end 

und Tests für diesen Helfer

#spec/helpers/my_helper_spec.rb 
describe MyHelper do 
    it { expect(helper.my_helper).to have_selector "form[action='#{objects_path}'][method='post']" } # PASSES 
    it { expect(helper.my_helper).to have_selector "#object_field" } #FAILS - but this should pass 
    it { expect(helper.my_helper).to match /id=\"object_field\"/ } # PASSES 
end 

ich rspec bin noch am Lernen erzeugt, so kann dies eine offensichtliche Frage sein.

Warum sind diese Tests fehlgeschlagen, wenn have_selector an den Eingängen verwendet wird. Und doch have_selector übergibt das Formular-Tag korrekt und match übergibt die Eingabe-ID.

+0

try have_selector: css "#object_field" –

+0

Haben Sie bei der aktuellen Zeichenfolge sah Ihr Helfer zurückkehr? –

+0

Danke @FrederickCheung, ja die Zeichenfolge enthält alle Elemente und das Formular rendert wie erwartet. Ich kann den Matcher einfach nicht dazu bringen, sich wie erwartet zu verhalten. –

Antwort

0

Wie ich verstehe, ist object_field Variable, die ID des Elements enthalten. Wenn das stimmt, dann versuchen, nächste:

it { expect(helper.my_helper).to have_selector "##{object_field}" }