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 個以上のパラメータを持つメソッドは魅力的ではありません。
ここでの私の唯一の選択肢は、Rob Conery が行ったことと同等の、HttpRequest 全体をモックアップすることだと思います。これはベストプラクティスですか?あまりにも新しいフレームワークでは、それを伝えるのは困難です。
また、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 UpdateFrom の代わりに。
所属していません StackOverflow