سؤال

وأنا جميلة جديدة لتسخر لذلك هذا قد يكون شيئا أنا فقط لا على التقاط بعد، ولكن لا أستطيع أن أجد مثالا جيدا في أي مكان.

وأنا أحاول أن نؤكد أن افتراضيا، أي الطبقة التي ترث من صفي مجردة سوف مثيل مجموعة في المنشئ. ها هي فئة مجردة:

public abstract class DataCollectionWorkflow : SequentialWorkflowActivity
{
        private readonly DataSet _output = new DataSet();
        private List<DataCollectionParameter> _params = null;

        public DataCollectionWorkflow()
        {
            _params = new List<DataCollectionParameter>();   
        }

        public virtual IList<DataCollectionParameter> Parameters
        {
            get { return _params; }
            set { _params = (List<DataCollectionParameter>)value; }
        }
}

وكيف يسخر هذه مع وحيد القرن؟ إذا أفعل GenerateMock<DataCollectionWorkflow> (أو كعب)، تشغيل منشئ والميدان الخاص "_params" وهمية ليحصل على تهيئة، ولكن وهمية في "Parameters" الملكية هو ببساطة فارغة.

من الواضح أن فئة فرعية وهمية تم إنشاؤها يتم تجاوز تنفيذ الممتلكات. هل هناك طريقة استبعاد الممتلكات معلمات من يجري إعادة تنفيذها؟

وشكرا.

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

المحلول

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

وهكذا كان الجواب يستخدم PartialMocks. كنت قد غازل لفترة وجيزة مع توليد وهمية جزئي، ولكن عندما ركضت المصحح أكثر من ذلك لاحظت أن خصائص لم تكن حتى فارغة، وكانوا يلقون استثناءات غريبة، لذلك أنا لا تبدو أعمق من ذلك بكثير. كنت تستخدم النوع قصير شكل AAA من بناء الجملة.

وتبين ما إذا كنت ببساطة وهمية في وضع التشغيل، واختبار يعمل - تستخدم الخصائص كما هو (كما ينبغي أن يكون مع وهمية جزئي)

وحتى هنا الجواب:

[Test]
public void ShouldCreateParameterListInConstructor()
{
      var mockRepository = new MockRepository();
      var mock = mockRepository.PartialMock<DataCollectionWorkflow>();
      using ( mockRepository.Record() )
      {

      }
      using (mockRepository.Playback())
      {
           Assert.That(mock.Parameters, Is.Not.Null, "DataCollectionWorkflow base class didn't create new param collection");
      }
}

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

نصائح أخرى

ومحاولة جعل _params الظاهري

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