对使用 BindingHelperExtensions.UpdateFrom 的 ASP.NET MVC 操作方法进行单元测试的最佳方法?
-
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)
解决方案
我现在正在使用 模型绑定器 这样我的操作方法(基本上)看起来像:
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 而不是更新。
不隶属于 StackOverflow