سؤال

أنا أعمل مع اختبار المشروع على أساس WhoCanHelpMe الذي يستند إلى حادة العمارة ، NHibernateValidator ، إلخ.كما كتب when_the_profile_tasks_is_asked_to_create_a_profile وحدة اختبار يخلق كائن ملف تعريف وحفظها دون قضية.

الآن الوضع الكائن هو CreateProfileDetails النوع الذي يستمد من ValidatableValueObject الذي يرث IValidatable واجهة.

المشكلة السطوح عند صفي يقوم على كيان بدلا من ValidatableValueObject.عند الاختبار يتم تشغيل النظام.NullReferenceException لأن المصادقة باطل.

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

شكرا

-تيد-

هذا هو تتبع المكدس:


should ask the question repository to save the new question : FailedObject reference not set to an instance of an object.
System.NullReferenceException: Object reference not set to an instance of an object.
at SharpArch.Core.DomainModel.ValidatableObject.IsValid()
at FieldAudit.Framework.Validation.ValidatableExtensions.Validate(IValidatable entity) in ValidatableExtensions.cs: line 33
at FieldAudit.Tasks.QuestionTasks.CreateQuestion(Question question) in QuestionTasks.cs: line 40
at MSpecTests.FieldAudit.Tasks.when_the_question_tasks_is_asked_to_create_a_question.b__2() in QuestionTasksSpecs.cs: line 137 

هذا هو التسلسل الهرمي فئة:


entity = {FieldAudit.Domain.Question}
[FieldAudit.Domain.Question] = {FieldAudit.Domain.Question}
  base {SharpArch.Core.DomainModel.Entity} = {FieldAudit.Domain.Question}
    base {SharpArch.Core.DomainModel.EntityWithTypedId} = {FieldAudit.Domain.Question}
      base {SharpArch.Core.DomainModel.ValidatableObject} = {FieldAudit.Domain.Question}
        Validator = null
        base {SharpArch.Core.DomainModel.BaseObject} = {FieldAudit.Domain.Question}

شفرة المصدر هنا http://code.google.com/p/sharp-architecture/source/browse/trunk/src/SharpArch/SharpArch.Core/DomainModel/ValidatableObject.cs>

مصدر رمز التحقق من صحة التسجيل:(آسف أنا مستخدم جديد و لا يمكن نشر هذا الرابط لذا عليك أن نسخ/لصق) whocanhelpme.codeplex.com/SourceControl/changeset/view/58203#883241

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

المحلول

الكتاب من S#arp العمارة WhoCanHelpMe?(WCHM) على حد سواء استخدام خدمة تحديد المواقع لتزويد تنفيذ SharpArch.الأساسية.CommonValidator.IValidator إلى التحقق من صحة الطبقات.

حيث S#arp العمارة يستخدم التالية في SafeServiceLocator<TDependency> الدرجة


service = (TDependency)ServiceLocator.Current.GetService(typeof(TDependency));

WCHM يستخدم التالية في ValidatableValueObject الدرجة


return ServiceLocator.Current.GetInstance<IValidator>();

الناس التي كتب WCHM فقط فافات من GetInstance<IValidator>() طريقة وحدة اختبار


            var validator = new Validator();
            provider.Stub(p => p.GetInstance<IValidator>()).Return(validator);

حتى لو تغيير S#arp Entity من WCHM ValidatableValueObject أيضا من الضروري أن كعب من GetService(typeof(IValidator)) أن ق#arp هو ذاهب الى استخدام.

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