5

Co ja co do osiągnięcia jest użycie (polegać) current_user metodę podczas definiowania czynności ogórka. Używam Clearance w moim projekcie.Ogórek i Clearance: current_user w krokach

Przede wszystkim próbowałem użyć sign_in, ale to nie zadziałało (chyba Cucumber World nie wie o metodach Clearance ...).

Jak mogę sprawić, aby Cuckes rozpoznawał metody current_user i sign_in/sign_out?

Odpowiedz

6

Twoje cechy Ogórek należy jazdy swoją aplikację za pośrednictwem interfejsu użytkownika publicznego. Coś jak:

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

Ponieważ metody current_user nie jest dostępna w przeglądarce, nie należy używać go w spec.

Można go sfałszować w swoich krokach, przechowując @current_user w powyższym kroku, a następnie udostępniając mu czytnik atrybutów.

+0

Po 9 miesiącach zdałem sobie sprawę, jak cucke to prawda. Teraz zrozum, dlaczego Twoja odpowiedź była poprawna w ciągu jednego dnia. – gmile

+0

To wciąż frustrujące. Ponieważ 'current_user' jest' nil' nawet po stronie serwera, nie tylko po stronie przeglądarki. –

1

Nie zgadzam się z ideą, że każdy test akceptacji (ogórek lub inny) musi wykonywać logikę logowania. Na szczęście, jeśli się zgodzisz, Wyprzedaż dodała back door w testach, które pozwalają pominąć proces logowania.

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

Teraz możesz zostawić swoje funkcje związane z logowaniem jazdy ui logowania jako użytkownik będzie i pominąć, że dla funkcji, które nie są bezpośrednio związane z logowania.

+0

Dziękuję bardzo! – kwerle