سؤال

هذا هو ASP.NET MVC V1 (لا تستخدم V2 حتى الآن)

لدي إدخال الطريق مثل هذا:

            routes.MapRoute(
            "Srp",
            "soeg-{searchQuery}/{listingType}",
            new { controller = "Srp", action = "Search", listingType = string.Empty },
            new { listingType = "privat|forhandler|"}
            );

وعمل لمطابقته:

        public ActionResult Search(QueryParameters queryParameters)

إنه يعمل بشكل مثالي - يعرف إطار عمل MVC تعيين SearchQuery و ListingType على خصائص كائن QueryParameters بنفس الأسماء.

مشكلتي هي اختبار الوحدة. أنا أستخدم مشروع MVCContrib وأحب طريقة Sustmapto:

        [Test]
    public void RegisterSrpRoutes_SoegWithKeywordAndValidListingType_ShouldMapCorrectly()
    {
        var queryParameters = new QueryParameters {SearchQuery = "hest", ListingType = "privat"};
        "~/soeg-hest/privat".ShouldMapTo<SrpController>(controller => controller.Search(queryParameters));
    }

لا يعمل رغم ذلك! اعتدت أن يكون لدي معلمات محددة في عملي مثل هذا:

        public ActionResult Search(string searchQuery, string listingType)

التي نجحت (من الواضح أن الأكثر unittest سيحاول أن يبحث عن معلمتين (سلاسل) بدلاً من هذا الكائن الواحد.

هل لدى أي شخص فكرة عن كيفية حل المشكلة ، دون العودة إلى كتابة جميع الخصائص كمعلمات. Automabing MVC Of Properties Rocks ، لكنني آمل أن يكون هناك طريقة ما يمكن أن أحصل على MVCContribs TestHelper مع ذلك أيضًا.

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

المحلول

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

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