私は単体テストの学習中ですが、現実の "現実世界"のプロジェクトにどのように適用するかについて少し混乱しています。チュートリアルでは、単純な単一クラスアプリケーションを使用しているように見えます。基本的な単体テストの処理を非常にシンプルにします。しかし、実際のn層プロジェクトに適用しようとすると、どこから始めるべきか分かりません。私はユニットテストを書くべきなのか分からないようです。例えば基本的な 'CreateUser'メソッドのユニットテスト
、ユーザ入力を受け入れ、有効な場合に、データベースへの書き込みは、簡単なアクションコントローラのメソッドやクラス:
public class RegisterViewModel
{
[Required]
[Display(Name = "UserName")]
[StringLength(8, MinimumLength = 4, ErrorMessage = "UserName must be between 4 and 8 characters.")]
public string UserName { get; set; }
[Required]
[EmailAddress]
[Display(Name = "Email")]
public string Email { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
[HttpPost]
public ActionResult Register(RegisterViewModel newUser)
{
if (ModelState.IsValid)
{
_userRepository.AddNewUser(newUser);
}
else
{
return View(newUser);
}
return RedirectToAction("Approval");
}
私は私はユニットテストを書く、あるいはすべきかを判断しようとしています上記の例のために書くことができる単位テストは何ですか?
- アクションメソッドが正しいビューを返すことをテストしますか?
- ユーザー入力が有効であることを確認する単体テストを書いていますか? MVC DataAnnotationsがそれをカバーすると仮定しますか?
- 有効なユーザーをデータベースに書き込むのはどうですか?私は これをテストする(またはこれさえ可能であるべきでしょうか?私が行方不明です他に何
?
ユニットが正しく機能することをテストするように努力する必要があります。その意味では、完全に機能するためには何をする必要があるかを決める必要があります。たとえば、ユニットが無効なユーザー作成(ユーザー名などの無効な文字)を拒否し、失格とする場合、それはテストするものです。基礎となるデータリポジトリを模倣し、有効なデータが与えられたときにユニットが実際に作成されたユーザを永続化しようとしていることをテストする必要があります。 –