はここでコントローラのアクションの一部だときに検証されていません:if文がさえ呼ばれる前にモデルは、自動的にユニットテスト
[HttpPost]
public ActionResult NewComplaint(Complaint complaint)
{
if(!ModelState.IsValid)
{
// some code
}
// some more code...
}
アプリケーションを実行して、モデルが自動的に検証されます。ただし、このコードを単体テストしようとすると、自動検証は行われません。
FormCollectionを使用して、代わりにTryUpdateModelを呼び出す場合、検証は行われますが、私はそれを使用したくありません。
私は、if文の前にTryValidateModel(model)を呼び出すと問題がうまく回避されることがわかりました。追加のコード行が1つだけ必要です。私はむしろそれを取り除くだろう。
ユニットテスト時に自動検証は行われませんが、アプリケーションの実行中に発生する理由はありますか?
編集:私はASP.NET MVC3 RC1を使用していますし、それが結合モデル中
男は、今私は愚かな感じ。ちょうどそれをやったのか、それを嘲笑したのですか?私のテストでは、モックを介してModelStateを設定するのではなく、検証に合格するために必要なすべてのプロパティ/エントリを持つobject/formCollectionを作成します。 – xTRUMANx
marcind、私はフレームワークがほとんどの単体テストの範囲外であることを確認します。ただし、テストでは、正しいデータ注釈が指定されているかどうかを示す必要があります。 – wilk