コントローラー アクションの一部を次に示します。
[HttpPost]
public ActionResult NewComplaint(Complaint complaint)
{
if(!ModelState.IsValid)
{
// some code
}
// some more code...
}
アプリケーションを実行すると、if ステートメントが呼び出される前にモデルが自動的に検証されます。ただし、このコードを単体テストしようとすると、自動検証は行われません。
FormCollection を使用して代わりに TryUpdateModel を呼び出すと、検証が行われますが、それは使用したくありません。
if ステートメントの前に TryValidateModel(model) を呼び出すと、問題がうまく回避されることがわかりました。コードを 1 行追加するだけです。しかし、私はむしろそれを取り除きたいと思います。
単体テストでは自動検証が行われず、アプリケーションの実行中に行われる理由はありますか?
編集: 言及するのを忘れて、私は ASP.NET MVC3 RC1 を使用しています。違いがあれば、コントローラーの HTTPContext オブジェクトをモックしています。