في
النص الأخير حول التأكيدات ، كان هناك شيء مهم مفقود ولم يتم الاتفاق عليه.
ما هو الفرق بين معين ومتى وكيف يرتبط هذا التأكيدات؟
الفكرة الكامنة وراء هذا بسيطة - نحن نريد للحد من عدد من التأكيدات.
النظر في مثال صغير.
دعونا ننقل بعض الكائنات الصالحة إلى الطريقة ، ندعو الخدمة الإضافية ونثري خصائصها.
ليس من الضروري أن أكتب رمزًا قبل الاختبار ، لذلك سنفترض أن هذا فقط لنقل الصورة الكبيرة.
public User enrichUser(User validUser){ user.setDetails(enrichmentService.getUserDetails(validUser.getId())); return user; }
نحن لسنا مهتمين بصيغ ValidUser. إنه ليس خاليًا ، إنه دائمًا ما يكون له معرّف ، فهو صالح. هذا هو الشرط المسبق ، أي معين.
في الواقع ، نحن بحاجة إلى النظر في شرطين - خدمة التخصيب تفشل والنجاح. هذا شرط ، أي متى.
كيف نميز واحدة عن الأخرى؟
نظرا لا يتطلب التحقق من الحالات الأخرى ، عندما - يتطلب. أي whenValidUser يتطلب whenInvalidUser ، و givenValidUser لا.
و تخصيب الخدمة = لاغية؟ إذا حقننا تبعية ، فيمكننا إذن النظر في هذا الجزء من التكوين وعدم التفكير فيه في الاختبارات. تماما. هناك شروط مسبقة ليس من المنطقي إدراجها.
إذا كانت الطريقة تقبل المستخدم فقط ، فسيزيد عدد البرامج النصية التي يتم فحصها. نظرا يصبح عندما.
سؤال آخر - ولكن ، بالمعنى الدقيق للكلمة ، عن طريق الصدفة أو عن قصد ، طريقة يمكن أن تدمر مستخدم لنا؟ لا ينبغي لنا التحقق من ذلك؟
إذا أجبنا - نعم ، يجب علينا ، يجب علينا أن نعترف بأن هذا يمكن أن يكون عبئا كبيرا. يمكن أن يكون للمستخدم خمسون خاصية ، ويمكن أن يكون التحقق منها في كل طريقة مكلفًا. هناك اختبارات مجمعة تستخدم المكتبات ، ولكن من خلال القيام بذلك نفقد الوظيفة المهمة للاختبار - لوصف الوظيفة المطلوبة ، وعدم التقاط الأوساخ خلف منحنى التنفيذ.
يمكن مقارنة ذلك بأمن المطار - يقوم شخص ما بفحص التذكرة وأمتعة شخص ما وجيوب شخص ما ، ولا يتم تكرار الشيكات في كل خطوة. أي تثق الأصول في ما سيفعله التنفيذ ، وتحقق فقط من ما يصفونه.
وبالتالي ، فإن الشرط المسبق الذي تم إنشاؤه بشكل صحيح يقلل من عدد النصوص والتأكيدات. نجعل التأكيدات بشرط فقط.
لسوء الحظ ، فإن أطر عمل مثل Cucumber لا تحدث فرقًا كبيرًا ، لأن الشروط المسبقة نفسها لا تتحقق من تلك التي تعطى ، ذلك عندما يكون هو نفسه ، مصطلح وصفي بحت.
في الحالات الأكثر تعقيدًا ، قد يكون من الصعب التمييز بين الآخر والآخر الذي تنبعث منه رائحة في حد ذاته. على سبيل المثال ، تحقق العديد من الاختبارات في صف واحد من نفس الشيء ، أو يتم نسيان بعض الشروط في الاختبارات ، أو يتم تجاهلها على أنها غير لائقة.
هذا سبب وجيه لإعادة هيكلة المواصفات وإعادة التصميم.