私はProductController
クラスとProduct
モデルを持っています。毎回ProductController
でCreate
アクションが呼ばれ、それがFormCollection
に基づいて新しいProduct
を作成し、それが日付を変更するProduct
内の関数を呼び出します。Asp.net MVC 3のユニットテストモデルの変更
[HttpPost]
public ActionResult Create(FormCollection form)
{
Product product = new Product();
TryUpdateModel(product, form);
if(ModelState.IsValid)
{
product.ChangeDate(form["date"]);
repository.SaveProduct(product);
return RedirectToAction("Index");
}
else
return View();
}
私はそうProduct
をテストすることができますどのように思っていた私が知っている.ChangeDate
(MoqのVerify
経由で)呼び出されています。私はTryUpdateModel
経由でバインディング例外をキャッチしたいので、私はAsp.Net自動モデルバインドを使用しませんでした。コントローラまたはリポジトリクラスに.ChangeDate
を入れるべきかどうかはわかりません。私はMoq、MVC3、Entity Framework 4を使用しています。
セットアップそれは、特定の引数で呼び出されるように嘲笑リポジトリのSaveProduct
方法に期待をすることができますおかげで、 アレックス
ありがとう、ダーリン。私はそれを考えなかった!複数の期待を設定する方法はありますか?では、Dateだけでなく、将来の参照のためにちょうど疑問に思っています... – Alex
@Alex、確かに: 'p.Date == someExpectedDate && p.Foo ==" bar "&& ...' –