Sobes.tech
Middle

Agar biz nazoratchi kodini sinovdan o'tkazsak nima bo'ladi?

sobes.tech AI

AIdan javob

Kontroler kodini sinovdan o'tkazishda, kiruvchi HTTP so'rovlarini qayta ishlash mantiqi, xizmatlar va depozitlar bilan o'zaro ta'sir va HTTP javoblarini shakllantirishni tekshiramiz.

Test turlari:

  • Birlik testlari: Kontrolörning alohida metodlarini izolyatsiyada tekshiradi, bog'liqliklarni (xizmatlar, depozitlar) soxtalashtirish orqali. Ichki mantiqqa e'tibor qaratiladi.
  • Integratsiya testlari: Kontrolörning ilovaning boshqa komponentlari bilan (masalan, xizmatlar, ma'lumotlar bazasi) o'zaro ta'sirini tekshiradi. So'rovni to'liq ishlash oqimini tekshiradi.
  • Funktsional testlar: Kontrolörning yakuniy foydalanuvchi nuqtai nazaridan ishlashini tekshiradi, haqiqiy HTTP so'rovlarini yuborish orqali joylashtirilgan ilova yoki test serveriga.

Test maqsadlari:

  • Kontrolör turli HTTP so'rov turlarini (GET, POST, PUT, DELETE va boshqalar) to'g'ri ishlashini ta'minlash.
  • Kiruvchi ma'lumotlarning to'g'ri validatsiyasini tekshirish.
  • Biznes mantiqi bilan (xizmatlar) to'g'ri o'zaro ta'sirni ta'minlash.
  • HTTP javoblarini, status kodlari va javob matnini to'g'ri shakllantirishni ta'minlash.
  • Istisnolar va xatoliklarni to'g'ri boshqarilishini tekshirish.

Birlik testining misoli, xUnit freymvorki va Moq kutubxonasi bilan:

// Tashkiliy
var mockService = new Mock<IMyService>();
mockService.Setup(s => s.GetDataAsync(It.IsAny<int>())).ReturnsAsync(new MyData { Id = 1, Name = "Test" });
var controller = new MyController(mockService.Object);

// Harakat
var result = await controller.Get(1);

// Tasdiqlash
var okResult = Assert.IsType<OkObjectResult>(result.Result);
var returnedData = Assert.IsType<MyData>(okResult.Value);
Assert.Equal(1, returnedData.Id);
Assert.Equal("Test", returnedData.Name);