2010-12-31 15 views
0

Ich brauche verschiedene Einstellungen für meine Komponententests und verschiedene Einstellungen für meine Integrationstests. BeispielWie konfiguriere ich Integrationstests mit rspec 2?

Für Unit-Tests, würde ich

WebMock.disable_net_connect!(:allow_localhost => true) 

Und für Integrationstests zu tun, würde ich

WebMock.allow_net_connect! 

auch tun, vor Beginn eines Integrationstest, würde ich gerne sicherstellen, dass solr gestartet wird. Daher möchte ich anrufen können

config.before(:suite) do 
    SunspotStarter.start 
end 

ABER, nur für Integrationstests. Ich möchte mein Solr nicht starten, wenn es ein Komponententest ist.

Wie behalte ich ihre Konfigurationen getrennt? Im Moment habe ich das gelöst, indem ich meine Integrationstests in einem Ordner außerhalb des Spec-Ordners gehalten habe, der seinen eigenen spec_helper hat. Gibt es einen besseren Weg?

Antwort

2

Meine Lösung könnte ein bisschen hackish sein, aber so weit ich es getestet habe, sollte es funktionieren.

Ich bemerkte, dass config.include nimmt ein type Argument, so könnte es ab sein verwendet, um beliebigen Code-Blöcke ausführen wie folgt:

module UnitTestSettings 
    def self.included(base) 
    WebMock.disable_net_connect!(:allow_localhost => true) 
    end 
end 

module IntegrationTestSettings 
    def self.included(base) 
    WebMock.allow_net_connect! 

    RSpec.configure do |config| 
     config.before(:suite) do 
     SunspotStarter.start 
     end 
    end 

    end 
end 

Rspec.configure do |config| 
    config.include UnitTestSettings, :type => :model 
    config.include IntegrationTestSettings, :type => :integration 
end 

Tropfen diese in einer Datei in dem Ordner Support und Sie sollten gut zu gehen, obwohl ich den Code nicht tatsächlich getestet habe. Ich bin mir auch ziemlich sicher, dass es einen besseren Weg gibt, dasselbe zu erreichen.

2

Sie können einen Typ für einen Vorher/Nachher-Block auf dieselbe Weise wie für die include-Anweisung angeben. So könnten Sie folgendes tun:

RSpec.configure do |config| 
    config.before(:each, type: :model) do 
    WebMock.disable_net_connect!(:allow_localhost => true) 
    end 

    config.before(:each, type: :request) do 
    WebMock.allow_net_connect! 
    end 

    config.before(:suite, type: :request) do 
    SunspotStarter.start 
    end 
end 
Verwandte Themen