[解決済み] ASP.NET DataAnnotationsのユニットテスト検証
2023-07-24 05:40:56
質問
モデルの検証にDataAnnotationsを使用しています。
[Required(ErrorMessage="Please enter a name")]
public string Name { get; set; }
コントローラでは、ModelStateの値をチェックしています。これは、ビューから投稿された無効なモデルデータに対して正しくfalseを返しています。
しかし、私のコントローラのアクションのユニットテストを実行すると、ModelStateは常にtrueを返します。
[TestMethod]
public void Submitting_Empty_Shipping_Details_Displays_Default_View_With_Error()
{
// Arrange
CartController controller = new CartController(null, null);
Cart cart = new Cart();
cart.AddItem(new Product(), 1);
// Act
var result = controller.CheckOut(cart, new ShippingDetails() { Name = "" });
// Assert
Assert.IsTrue(string.IsNullOrEmpty(result.ViewName));
Assert.IsFalse(result.ViewData.ModelState.IsValid);
}
テストでモデルの検証を設定するために、何か特別なことをする必要がありますか?
ありがとうございます。
ベン
どのように解決するのですか?
バリデーションは
ModelBinder
. この例では
ShippingDetails
をスキップして
ModelBinder
を省略することができ、その結果、検証も完全に省略されます。入力検証とモデル検証の違いに注意してください。入力バリデーションは、ユーザーが何らかのデータを提供する機会があったことを確認するためのものです。関連するフィールドがないフォームを提供する場合、関連するバリデーターは呼び出されません。
MVC2では、モデル検証と入力検証について変更があったので、正確な動作は使用しているバージョンに依存します。以下を参照してください。 http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html を参照してください。
[EDIT] これに対する最もクリーンなソリューションは
UpdateModel
を手動で呼び出すことです。
ValueProvider
. これでバリデーションが実行され
ModelState
を正しく設定します。
関連
-
CS0234 名前空間 'Microsoft.AspNet' に型または名前空間名 'Mvc' が存在しない (あなたは
-
一時的なクラスを生成できない(result=1)、問題の解決方法
-
[解決済み] ファイルまたはアセンブリ 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' を読み込めません でした。
-
[解決済み] ASP.NET WebサイトとASP.NET Webアプリケーションのどちらを選ぶか?
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET MVCでenumからドロップダウンリストを作成するにはどうすればよいですか?
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み] ASP.NET MVCでビューをコンパイルする
-
[解決済み】ASP.NETのWebサイト全体のブラウザキャッシュを無効にする
-
[解決済み] ASP.NETの新しいセキュリティ脆弱性の深刻度と回避方法について教えてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
NET6新機能 新構造体の最適化
-
ASP.NET Core MVC フィルタ
-
ASP.NET Core Web API チュートリアル プロジェクト構成図
-
[解決済み] ASP.NET MVCコントローラは、Imageを返すことができますか?
-
[解決済み】開発環境と本番環境で異なるWeb.configを使用する。
-
[解決済み] イベントログへの書き込み時にSystem.Security.SecurityExceptionが発生する。
-
[解決済み] ASP.NETの新しいセキュリティ脆弱性の深刻度と回避方法について教えてください。
-
[解決済み] Asp.Net 4でValidateRequest="false "が動作しない。
-
[解決済み] FormsAuthentication.SignOut()がユーザーをログアウトしない
-
[解決済み] Moqフレームワークを使用してModelState.IsValidをモックする方法とは?