对使用BindingHelperExtensions.UpdateFrom的ASP.NET MVC操作方法进行单元测试的最佳方法?
时间:2020-03-05 18:43:27 来源:igfitidea点击:
在处理表格后,我有类似
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)
解决方案
回答
将其包装在界面中并进行模拟。
回答
使用http://www.codeplex.com/MVCContrib上的NameValueDeserializer代替UpdateFrom。
回答
我现在正在使用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"); } }