أفضل طريقة لاختبار الوحدة لأساليب إجراء ASP.NET MVC التي تستخدم BindingHelperExtensions.UpdateFrom؟

StackOverflow https://stackoverflow.com/questions/28723

  •  09-06-2019
  •  | 
  •  

سؤال

في التعامل مع منشور النموذج لدي شيء من هذا القبيل

    public ActionResult Insert()
    {
        Order order = new Order();
        BindingHelperExtensions.UpdateFrom(order, this.Request.Form);

        this.orderService.Save(order);

        return this.RedirectToAction("Details", new { id = order.ID });
    }

لا أستخدم معلمات صريحة في الطريقة لأنني أتوقع أن أضطر إلى التكيف مع عدد متغير من الحقول وما إلى ذلك.والطريقة التي تحتوي على أكثر من 20 معلمة ليست جذابة.

أفترض أن خياري الوحيد هنا هو محاكاة HttpRequest بالكامل، وهو ما يعادل ما فعله Rob Conery.هل هذه أفضل الممارسات؟من الصعب معرفة إطار العمل الجديد جدًا.

لقد رأيت أيضًا حلولاً تتضمن استخدام ActionFilter بحيث يمكنك تحويل توقيع الطريقة أعلاه إلى شيء مثل

[SomeFilter]
public Insert(Contact contact)
هل كانت مفيدة؟

المحلول

أنا الآن باستخدام ModelBinder بحيث تبدو طريقة العمل الخاصة بي (بشكل أساسي) مثل:

    public ActionResult Insert(Contact contact)
    {

        if (this.ViewData.ModelState.IsValid)
        {
            this.contactService.SaveContact(contact);

            return this.RedirectToAction("Details", new { id = contact.ID });
        }
        else
        {
            return this.RedirectToAction("Create");
        }
    }

نصائح أخرى

لفها في واجهة واستهزئ بها.

استخدم NameValueDeserializer من http://www.codeplex.com/MVCContrib بدلاً من التحديث من.

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