Witam Chcę przeprowadzić pewne testy funkcjonalne mojej aplikacji Rails 3, która używa Devise i CanCan.Testowanie funkcjonalne za pomocą Rails and Devise. Co umieścić w moich urządzeniach?
W moim modelu użytkownika mam wiek użytkowników, chcę sprawdzić, czy użytkownik może tylko odwiedzić pewną stronę, jeśli są to:
- Zalogowany
- Ponad 35
Widziałem w dokumencie Devise, że mogę użyć: * sign_in * i umieściłem to w moich testach i wygląda na to, że działa - test nie powoduje błędu, ponieważ mam:
include Devise::TestHelpers
w moim * test_helper.rb *
Po wyjęciu, mój test powoduje błąd, ponieważ * sign_in * nie jest zdefiniowany. Więc nie jest to problem pomocniczy.
Po uruchomieniu testu i sprawdzeniu, czy span # loggedin ma jedno wystąpienie, test się nie powiódł, ponieważ wystąpiło 0 wystąpień. rozpiętość # loggedin pojawia się tylko jeśli user_signed_in *? *
Czego potrzebuję, aby umieścić w moich lamp lub testów, aby utworzyć użytkownika testowego, który jest także w pełni zarejestrowany użytkownik (potwierdzone etc)?
Zobacz Kod: Kod
<% if user_signed_in? %>
<span id="loggedin">User is signed in</span>
User age is <span id="age"><%= current_user.age.to_s %></span>
<% end %>
Test:
test "should get index" do
sign_in :one
get :index
assert_response :success
assert_select 'span#loggedin', :count => 1
end
Oprawa:
one:
email: [email protected]
age: 36
To działa dobrze w rozwoju, kiedy ręcznie zalogować, ale mam nadzieję, że go zautomatyzować wszystko - punkt testowania naprawdę !!
Możesz użyć ERB w swoich urządzeniach, które pomogą ci ułatwić utrzymanie urządzeń. Można użyć narzędzi takich jak FactoryGirl zamiast (lub w połączeniu z), co ułatwi utrzymanie testów, ale znacznie spowolni testy. – iain
Wiem o używaniu ERB w moich urządzeniach, ale jaki ERB potrzebuję do wygenerowania powyższego urządzenia? To było sedno mojego pytania - konkretnie, co muszę umieścić w moich urządzeniach? –
Wiem, że to staruszek, ale natknąłem się na to, szukając pomocy w podobnym scenariuszu. Moje eksperymenty wskazują, że proste dodanie znacznika czasu "confirm_at" do Twojego urządzenia wydaje się zdziałać. – Chris