2012-12-21 8 views
13

versagt Ich habe ...Wie Rspec save_and_open_page automatisch zu machen, wenn eine spec

/spec/spec_helper.rb:

require 'capybara/rspec' 
require 'capybara/rails' 
require 'capybara/dsl' 

RSpec.configure do |config| 
    config.fail_fast = true 
    config.use_instantiated_fixtures = false 
    config.include(Capybara, :type => :integration) 
end 

So, sobald eine spec ausfällt, Rspec beendet und zeigt Du hast den Fehler.

An dem Punkt möchte ich Rspec auch Capybara save_and_open_page-Methode automatisch aufrufen. Wie kann ich das machen?

Capybara-Screenshot sieht vielversprechend aus, aber während es sowohl den HTML-Code und einen Screenshot als Bilddatei (die ich nicht brauche) speichert, öffnet es sie nicht automatisch.

Antwort

12

In der Konfiguration der RSPEC können Sie für jedes Beispiel einen Nachhaken (https://www.relishapp.com/rspec/rspec-core/v/2-2/docs/hooks/before-and-after-hooks) definieren. Es ist nicht sehr gut dokumentiert, aber der Block für diesen Haken könnte einen example Param nehmen. Auf dem example Objekt können Sie testen:

  • ist es ein Merkmal spec: example.metadata[:type] == :feature
  • hat es versäumt: example.exception.present?

Der vollständige Code sollte wie snipped aussehen:

# RSpec 2 
    RSpec.configure do |config| 
    config.after do 
     if example.metadata[:type] == :feature and example.exception.present? 
     save_and_open_page 
     end 
    end 
    end 

    # RSpec 3 
    RSpec.configure do |config| 
    config.after do |example| 
     if example.metadata[:type] == :feature and example.exception.present? 
     save_and_open_page 
     end 
    end 
    end 
+0

funktioniert wie ein Charme ... danke – rizidoro

+1

Rspec 3 erfordert explizit 'do | Beispiel |' für es zu arbeiten – Eva

1

In RSpec 2 in Verbindung mit Rails 4 verwende ich diesen Konfigurationsblock:

# In spec/spec_helper.rb or spec/support/name_it_as_you_wish.rb 
# 
# Automatically save and open the page 
# whenever an expectation is not met in a features spec 
RSpec.configure do |config| 
    config.after(:each) do 
    if example.metadata[:type] == :feature and example.exception.present? 
     save_and_open_page 
    end 
    end 
end 
Verwandte Themen