سؤال

لدي الدرجة التي يلتف GetGlobalResourceObject و GetLocalResourceObjet بحيث يمكن استخدامها بسهولة في MVC.نموذج التحقق من صحة الطبقات ثم تحميل رسائل الخطأ حيوي من ملفات الموارد.المشكلة هي وحدة اختبار.يستخدم رمز "~/", و في حين أن كل شيء يعمل بشكل صحيح عندما يتم تشغيل حل, لا أستطيع أن أرى كيف تجعل وحدة الاختبارات لأنني دائما تظهر رسالة الخطأ التالية "النظام.ويب.HttpException:تطبيق النسبية المسار الظاهري '~/' لا يمكن أن تكون مطلقة ، لأن الطريق إلى تطبيق غير معروف."

الكود الذي يطرح الاستثناء هو ما يلي ، تستخدم لتقييم تعبير والعودة الموارد العالمية كائن.

Private Function GetExpressionFields(ByVal expression As String) As ResourceExpressionFields
    Return GetExpressionFields(expression, "~/")
End Function

Private Function GetExpressionFields(ByVal expression As String, ByVal path As String) As ResourceExpressionFields
    Dim context As New ExpressionBuilderContext(path)
    Dim resource_builder As New ResourceExpressionBuilder()
    Dim fields As ResourceExpressionFields
    fields = DirectCast(resource_builder.ParseExpression(expression, GetType(String), context), ResourceExpressionFields)
    Return fields
End Function

أي أفكار حول كيفية اختبار هذه وغيرها من التعليمات البرمجية التي تستخدم الموارد الملفات ؟

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

المحلول

وأخذت نهجا مختلفا قليلا. يمكنني استخدام ملفات الموارد من خارج App_ * الدلائل، وفي هذه الحالة IDE سوف تضيف أداة مخصصة لملف لإنشاء مجمع المكتوبة بشدة للموارد التي تعمل في أي مكان في الحل، بما في ذلك في وجهات النظر، ويتصرف خلال وحدة الاختبارات: http://odetocode.com/Blogs/scott/archive/ 2009/07/15 / 13211.aspx

وهذا ليس جوابا على سؤالك بالضبط، لكنني أعتقد الحصول على App_ * الموارد على التصرف بشكل صحيح تحت كل الظروف كانت قدرا كبيرا من العمل.

نصائح أخرى

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

والعامة للموارد سلسلة ثابت (وحدة تحكم المراقب المالي، تعبير سلسلة، بارامس يعترض [] وسائط)

{

وإذا (! IsInTestScope)

{

وResourceExpressionFields الحقول = GetResourceFields (التعبير، "~ /")؛

والعودة GetGlobalResource (الميادين، وسائط)؛

و}

والعودة string.Empty؛

و}

لقد وجدت نهج اختبار التعليمات البرمجية التي تستخدم الموارد داخل App_* الدلائل.لقد وصف لي حل في بلدي بلوق وصلة النص

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