Saya harap pertanyaan ini memberikan beberapa jawaban menarik karena itu salah satu yang mengganggu saya untuk sementara waktu.
Apakah ada nilai nyata dalam pengujian unit controller di ASP.NET MVC?
Yang saya maksud dengan itu adalah, sebagian besar waktu, (dan saya bukan jenius), metode pengontrol saya, bahkan pada sesuatu yang paling kompleks seperti ini:
public ActionResult Create(MyModel model)
{
// start error list
var errors = new List<string>();
// check model state based on data annotations
if(ModelState.IsValid)
{
// call a service method
if(this._myService.CreateNew(model, Request.UserHostAddress, ref errors))
{
// all is well, data is saved,
// so tell the user they are brilliant
return View("_Success");
}
}
// add errors to model state
errors.ForEach(e => ModelState.AddModelError("", e));
// return view
return View(model);
}
Sebagian besar pekerjaan berat dilakukan oleh pipa MVC atau perpustakaan layanan saya.
Jadi mungkin pertanyaan yang akan diajukan:
- berapakah nilai unit yang menguji metode ini?
- tidakkah akan putus
Request.UserHostAddress
danModelState
dengan NullReferenceException? Haruskah saya mencoba mengejek ini? - jika saya refractor metode ini menjadi "helper" yang dapat digunakan kembali (yang mungkin saya harus, mengingat berapa kali saya melakukannya!), akan menguji yang bahkan berharga ketika semua saya benar-benar menguji sebagian besar "pipa" yang, mungkin, telah diuji dalam satu inci dari kehidupannya oleh Microsoft?
Saya pikir maksud saya sebenarnya , melakukan hal-hal berikut ini tampaknya sama sekali tidak ada gunanya dan salah
[TestMethod]
public void Test_Home_Index()
{
var controller = new HomeController();
var expected = "Index";
var actual = ((ViewResult)controller.Index()).ViewName;
Assert.AreEqual(expected, actual);
}
Jelas saya menjadi tumpul dengan contoh berlebihan yang tidak ada gunanya ini, tetapi apakah ada yang punya kebijaksanaan untuk menambahkan di sini?
Menantikan itu ... Terima kasih.