BindingHelperExtensions.UpdateFrom を使用する ASP.NET MVC アクション メソッドを単体テストする最良の方法は?

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 個以上のパラメータを持つメソッドは魅力的ではありません。

ここでの私の唯一の選択肢は、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 の代わりに。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top