null
のMVCコントローラアクションパラメータをテストする価値はありますか?有効な値がアクションに渡されることを保証することが目的であり、null
も可能性があります。C#ユニットテストMVCコントローラNull値のアクションパラメータ
[HttpPost]
public ActionResult Create(ContactViewModel viewModel)
{
if (!ModelState.IsValid)
return View("Create", viewModel);
if (viewModel == null)
return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "No data received");
var contact = Mapper.Map<Contact>(viewModel);
//contact.UserId = User.Identity.GetUserId();
contact.UserId = _user.Id;
_unitOfWork.Contacts.Add(contact);
_unitOfWork.Complete();
return RedirectToAction("Index");
}
そして、nullパラメータをチェックするための私のテスト:ここ
は、コントローラのアクションです
[TestMethod]
public void CreatePost_NullViewModelPassed_ShouldReturnBadRequest()
{
var result = _controller.Create(null) as HttpStatusCodeResult;
result.StatusCode.Should().Be(400);
}
上記のテストは常に渡しますが、これは有用な試験ですか?私はポストマンとPOSTメソッドをヒットしようとしているが、私は私のCreate
アクションのHttpGet
バージョンを取得:あなたが書いている
public ViewResult Create()
{
return View("Create", new ContactViewModel());
}
テスト中のメソッドのいくつかのロジックを表示 – Nkosi
問題に関連するコードをさらに提供する必要があります。できるだけ小さい自己完結型の例を提供し、問題を再現してください。あなたのテストでは、できるだけ多くをカバーするようにしてください。あなたのクラス/メソッドがnull値を受け入れるならば(特にそのヌル値が実行の違いを意味する場合)、それをテストする必要があります。同様に、null値を受け入れるべきでない場合、メソッドは 'ArgumentNullException'(またはそれに類するもの)をスローしてテストする必要があります。 – gmiley