5

Was ich zu erreichen ist, ist zu verwenden (verlassen auf) current_user Methode beim Definieren der Gurkenschritte. Ich verwende Clearance in meinem Projekt.Gurke und Clearance: current_user in Schritten

Zuerst habe ich versucht, sign_in zu verwenden, aber es hat nicht funktioniert (ich denke, Gurke Welt kennt nicht Clearance Methoden ...).

Also, wie mache ich Cuckes erkennen current_user und sign_in/sign_out Methoden?

Antwort

6

Ihre Cucumber-Funktionen sollten Ihre Anwendung über die öffentliche Benutzeroberfläche steuern. Etwas wie:

Given /^I am signed in as "([^\"]*)"%/ do |username| 
    visit 'sign_in' 
    fill_in 'Username', :with => username 
    click 'Sign In' 
end 

Da die current_user Methode ist es, den Browser nicht verfügbar ist, sollten Sie nicht in Ihrem spec mit ihm sein.

Sie könnten es in Ihren Schritten vortäuschen, indem Sie @current_user im obigen Schritt speichern und dann ein Attributleser dafür bereitstellen.

+0

Nach 9 Monaten wurde mir klar, wie man cucke es richtig. Jetzt verstehe, warum deine Antwort an einem Tag korrekt war. – gmile

+0

Es ist immer noch frustrierend. Denn 'current_user' ist auch auf der Server-Seite" nil ", nicht nur auf der Browser-Seite. –

1

Ich stimme nicht mit der Idee, dass jeder Abnahmetest (Gurke oder anders) die Login-Logik ausüben muss. Zum Glück, wenn Sie zustimmen, hat Clearance ein back door in Tests hinzugefügt, mit denen Sie das Zeichen in Schritten überspringen können.

user = create(:user) 
visit posts_path(as: user) 

Jetzt können Sie Ihre Login-bezogene Funktionen Antrieb das Login ui als Benutzer verlassen würden und überspringen, dass für Funktionen, die nicht direkt an der Protokollierung verwandt sind in.

+0

Vielen Dank! – kwerle