1. ホーム
  2. c#

[解決済み] Moqフレームワークを使用してModelState.IsValidをモックする方法とは?

2023-02-05 04:04:33

質問

確認中 ModelState.IsValid のようにEmployeeを作成するコントローラのアクションメソッドで確認しています。

[HttpPost]
public virtual ActionResult Create(EmployeeForm employeeForm)
{
    if (this.ModelState.IsValid)
    {
        IEmployee employee = this._uiFactoryInstance.Map(employeeForm);
        employee.Save();
    }

    // Etc.
}

これをMoq Frameworkを使ったユニットテストのメソッドでモック化したいのです。こんな感じでモックを作ってみました。

var modelState = new Mock<ModelStateDictionary>();
modelState.Setup(m => m.IsValid).Returns(true);

しかし、これは私のユニットテストケースで例外を投げます。どなたか助けていただけませんか?

どのように解決するのですか?

モックは必要ありません。すでにコントローラを持っている場合は、テストの初期化時にモデルステートエラーを追加することができます。

// arrange
_controllerUnderTest.ModelState.AddModelError("key", "error message");

// act
// Now call the controller action and it will 
// enter the (!ModelState.IsValid) condition
var actual = _controllerUnderTest.Index();