2015-09-13 2 views
2

Когда у меня есть assert user_signed_in? в тесте интеграции, он говорит, что метод не определен. Есть ли способ, которым я могу использовать этот метод при тестировании? Я использую рельсы 4 и последнюю версию программы. Вот мой тестовый файл:Как я могу использовать devis user_signed_in? метод в тесте интеграции?

require 'test_helper' 

class UsersSignupTest < ActionDispatch::IntegrationTest 

test "valid signup information" do 
    get new_user_registration_path 
    assert_difference 'User.count', 1 do 
     post_via_redirect user_registration_path, 
            user: { first_name: "Example", 
              last_name: "User", 
              email:  "[email protected]", 
              password:    "password", 
              password_confirmation: "password" } 
    end 
    assert_template 'activities/index' 
    assert user_signed_in? 
    end 
+0

Нам нужно больше. Прочитайте советы о том, как создать минимальный, полный и проверяемый пример: http://stackoverflow.com/help/mcve – zetetic

+0

жаль, что исправлено – user4584963

ответ

4

Метод user_signed_in? входит в Devise::Controllers:Helpers модуль, который не доступен в тестах интеграции, так что вы не можете использовать его.

У вас есть возможность либо издеваться над этим методом (который не будет соответствовать вашим потребностям тестирования), либо тестировать, что пользователь выполнил вход, просмотрев содержимое страницы, которое будет отображаться только при входе пользователя в систему, например, Logout link например, или Signed in successfully сообщение.

Для ваших тестов контроллера вы можете использовать тест Разрабатывают хелперы include Devise::TestHelpers который выставляет sign_in и sign_out методы для вас, больше на том, что на домашней странице драгоценного камня https://github.com/plataformatec/devise

Смежные вопросы