Der Abschnitt "Erweiterte Tipps" der Serverspec-Site zeigt ein Beispiel für das Testen mehrerer Hosts mit demselben Testset. Ich habe ein eigenes Beispiel erstellt ( Ссылка ), aber es gibt Probleme.
Das erste Problem besteht darin, dass die Tests beim ersten Fehler stoppen, anstatt durch das Los zu gehen und einen Zähler zu behalten. Die zweite besteht darin, dass die Fehlerausgabe nicht angibt, auf welchem Host der Fehler aufgetreten ist. Was kann ich tun, um diese Probleme zu beheben und einen Abschlussbericht für alle Hosts zu erstellen?
Beim ersten Problem führt ServerSpec
standardmäßig alle Ihre Tests aus. Da Sie jedoch eine Schleife haben, die eine Rake
-Aufgabe für jede Umgebung ausführt, führt die erste Umgebung, die einen Fehler aufweist, zu einem Fehlschlagen der Aufgabe, sodass eine Ausnahme ausgelöst wird und die restlichen Aufgaben nicht ausgeführt werden.
Ich habe deinen Kern gegabelt und die Rake-Aufgabe aktualisiert, um sie mit einem Anfang zu umgeben / Rettung .
%Vor% Für das zweite Problem sieht es nicht so aus, als würde ServerSpec ausgeben, in welcher Umgebung die Tests laufen. Aber da der aktualisierte Gist zeigt, dass der Host in spec_helper.rb
gesetzt wird, können wir das zu eine RSpec-Konfiguration hinzufügen , die eine after(:each)
einrichtet und nur die host
bei Fehlern ausgibt. Die relevanten Codeänderungen sind in einer Verzweigung des Kerns , aber im Grunde genommen " Ich brauche nur das folgende Snippet in deinem spec_helper.rb
:
Tags und Links ruby rspec rspec3 serverspec