Aşağıda bulunan controller sınıfının test edileceğini düşünelim.
[ApiController]
[Route("api/[controller]")]
public class TodoItemsController : ApiControllerBase
{
[HttpGet]
public async Task<ActionResult<TodoItemBriefDto>> GetTodoItems([FromQuery] Query query)
{
return await Mediator.Send(query);
}
}
Soru: Sınıfa ait her şeyi test etmeli miyim?
1 – TodoItemsController sınıfı ApiControllerAttribute attribute sahiptir.
2 – TodoItemsController sınıfı RouteAttribute attribute sahiptir.
3 – TodoItemsController sınıfı “GetTodoItems” isimli bir meoda sahiptir.
4 – RouteAttribute attribute “api/[controller]” diye bir parametreye sahiptir.
5 – GetTodoItems metodu ActionResult döndürür.
6 – GetTodoItems metodu Query tipinde bir parametre alır.
7 – GetTodoItems metodu TodoItemBriefDto tipinde bir sonuç verir.
8 – GetTodoItems metodu null bir Query parametresine ArgumentNullException fırlatır.
9 – GetTodoItems metodu Query parametresi ile TodoItemBriefDto tipinde bir sonuç döndürür.
Unit test olarak bu testlerin hangileri yazılmalıdır?
Eğer unit test yazıyorsak, bir unit (metod) için belli girdiler ile belli sonuçların döndürdüğünü incelememiz gerekir. Çünkü unit testte kodun varlığı ve işlevselliği test edilir.
O halde yukarıdaki maddelerde 8 ve 9 numaralı maddelerde bir unit(method) test yapılmaktadır.
Diğer maddeler ise kodun var olup olmadığını test etmek için yazılmıştır.
Unit Test metodlarında bulunması gereken özelliklerden burada bahsedilmiştir.