سؤال

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

//In the "Resource Manager" class
public void process(Command cmd){
  //Initialize
  ExpensiveResource resource = new ExpensiveResource();
  //Use
  cmd.execute(resource);
  //Release / Close
  resource.close();
}

//In the Client class...
manager.process(new Command(){

  public void execute(ExpensiveResource res){
    //Do things with the resource
  }
});

لقد استخدمت هذا المصطلح / النمط كثيرا ولكن حاولت مؤخرا اختبارها, ، وهذا يعطيني صداع ...

كيف يمكنك الاختبار بمعزل Resourcemanager وفئات العميل؟ لقد وجدت أن هذا الأزواج الضيقة لهم كثيرا لا يمكنك القيام بذلك بسهولة.

الأفكار موضع تقدير.

يعتبر

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

المحلول

إذا كنت لا ترغب في جعل النوع المجهول نوع حقيقي يمكنك اختباره، فكر في تحريك التعليمات البرمجية في وظيفة تنفيذها () في وظيفة أخرى يمكنك اختبارها. النوع المجهول ثم يصبح كائن متواضع (http://xunitpatterns.com/humble٪20OBJECT.HTML.).

تعديل ولكن يجب عليك مواصلة إيجاد طريقة لاختبار التعليمات البرمجية في الوظيفة المجهولة.

في لغة Typeafe مثل C #، يمكن القيام بذلك من خلال وجود رمز مجهول استدعاء وظيفة عضو افتراضي. يتخصص الاختبار في الفصل عن طريق تجاوز مكالمة الوظيفة الافتراضية، والتحقق من ذلك يسمى.

في لغة nontypesafe مثل JavaScript، وظيفة العضو المسمى بالفعل الظاهري. بدلا من إنشاء نوع مشتق، يمكنك الكتابة فوق وظيفة العضو المسمى مع إصدار مسجل.

نصائح أخرى

أعتقد أن الطبقات المجهولة يجب أن تكون صغيرة وبسيطة للغاية والتي تختبر الهيكل بما في ذلك / استخدامها يجب أن تكون جيدة بما فيه الكفاية.

إذا كان لديك شيء معقد للغاية، كبيرا، فهما تشعر أنك الحاجة إلى اختبارها تجعلها فئة كاملة.

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

معظم الوقت، مما يجعلها فئات كاملة تتيح المزيد من المرونة وتحسين تصميم OO الخاص بك (إضافة المزيد من الفئات تعمل دائما على تحسين التصميم الخاص بك).

بالمناسبة، كما ذكرت الإغلاق أيضا نفس المشكلة - من الصعب إعادة استخدامها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top