اختبار إعادة التوجيه بعد تسجيل الدخول مع ابتكار

StackOverflow https://stackoverflow.com/questions/4036861

سؤال

لقد اتبعت التوصية من صفحات Github الخاصة بهذا:

http://github.com/plataformatec/devise/wiki/how-to:-redirect-to-a-pecific-page-on-sucessful-sign-in

الآن هذا يعمل بشكل رائع ، ولكن كيف يمكنك اختبار أن لديك هذا السلوك الآن؟

هل كانت مفيدة؟

المحلول

حسنًا ، هناك طريقتان لاختبارهما في مستوى الوحدة عن طريق كتابة اختبارات في وحدات التحكم التي ترث وحدة تحكم التطبيق. سوف يبدو الرمز شيء مثل

it "should redirect to page_x after logged in" do
  sign_in :user_role, @user 
  set_devise_mapping(:user_role) 
  get :new 
  response.should redirect_to(user_roles_dashboard_path) 
end

بالنسبة للخيار ، من المحتمل أن تكتب خطوة للقيام بتسجيل الدخول وتأكيد ما إذا كنت على صفحة المتوقع بعد تسجيل الدخول.

نصائح أخرى

HM ... أعتقد أنه يجب عليك كتابة اختبارات التكامل الخاصة للتحقق من السلوك. لا حاجة إلى اختبارات الوحدة أو الاختبارات الوظيفية إذا لم تقم بالعبث مع الرمز الربحي.

إذا كنت تستخدم اختبار Mini فقط ، فسيكون ذلك شيئًا مثل هذا:

require 'test_helper'

class SessionsControllerTest < ActionDispatch::IntegrationTest
  include Devise::Test::IntegrationHelpers

  test "admins should be redirected to comments_url" do
    sign_in(users(:one))
    post user_session_url
    assert_redirected_to comments_url
  end

  test "No admins should be redirected to root_path" do
    sign_in(users(:two))
    post user_session_url
    assert_redirected_to root_url
  end
end
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top