روبي على القضبان التجارب الفنية مع البرنامج المساعد مصادقة مريحة
-
22-08-2019 - |
سؤال
ولقد بدأت في كتابة الاختبارات الوظيفية للسكك بلدي التطبيق اليوم. يمكنني استخدام البرنامج المساعد المصادقة مريحة. جريت إلى بضع مربكة الأشياء آمل شخص يمكن توضيح بالنسبة لي.
1) لقد كتبت وظيفة تسجيل الدخول سريعة لأن معظم الوظائف في بلدي القضبان التطبيق تتطلب المصادقة.
def login_as(user)
@request.session[:user_id] = user ? user.id : nil
end
وهذه المسألة أرى مع هذه الوظيفة، هل هو في الأساس مزيفة المصادقة. يجب أن أكون قلقا حول هذا الموضوع؟ ربما كان على ما يرام إلى السير في هذا الطريق طالما أنا اختبار أسلوب المصادقة صحيح في مكان ما. أو ربما هذا هو الممارسة الفظيعة.
2) فان الخلط بين الشيء الثاني هو أنه في بعض الأماكن في الاختبارات الوظيفية بلدي، أنا في حاجة إلى عملية المصادقة الكاملة أن يحدث. عند تنشيط مستخدم، لدي طريقة do_activate خلق بعض الكائنات الأولية للمستخدم. ومن مماثلة لخلق كائن دفتر فارغ والهدف من ركلة جزاء لتطبيق الطلاب، وإذا كان هذا الأمر يبدو معقولا تماما.
وذلك من أجل اختبار طلبي بشكل صحيح، ولست بحاجة للمستخدم لضرب تلك الدولة تفعيل حتى يتم إنشاء هذه الكائنات. أنا حاليا باستخدام مصنع فتاة لإنشاء المستخدم، ومن ثم استدعاء login_as تعمل فوق إلى مصادقة وهمية.
وأعتقد أن خيار آخر يتمثل في تخطي تسلسل التوثيق الكامل ومجرد إنشاء كائنات فارغة مع مصنع فتاة. أنا يمكن اختبار المصادقة المناسبة في مكان آخر.
ما رأيك؟ إذا كان ينبغي أن تذهب من خلال التسلسل الصحيح، لماذا ليس رمز أدناه استدعاء وظيفة do_activate؟
user = Factory.create(:user)
user.active = 1
user.save
وشكرا لك!
المحلول
وتزوير كان مقبولا تماما.
ولكن، كتابة الاختبارات الأخرى التي تضمن أن الأشياء التي تريد حمايتها محمية. لذلك
test "it should show the profile page" do
user = Factory(:user)
login_as(user)
get :show, :id => user
assert_response :success
end
test "it should not show the profile page cos I'm not logged in" do
user = Factory(:user)
get :show, :id => user
assert_response :redirect
end
لا تتردد في ضرب لي عن المتابعات!