Sobes.tech
Middle

O que acontecerá se realizarmos testes no código do controlador?

sobes.tech IA

Resposta da IA

Ao testar o código do controlador, verificamos a lógica de processamento das solicitações HTTP entrantes, a interação com serviços e repositórios, bem como a formação de respostas HTTP.

Tipos de testes:

  • Testes unitários: Verificam métodos individuais do controlador isoladamente, simulando dependências (serviços, repositórios). Foco na lógica interna.
  • Testes de integração: Testam a interação do controlador com outros componentes da aplicação (por exemplo, serviços, banco de dados). Verificam o fluxo completo do processamento da solicitação.
  • Testes funcionais: Verificam o funcionamento do controlador do ponto de vista do usuário final, enviando solicitações HTTP reais à aplicação implantada ou a um servidor de testes.

Objetivos dos testes:

  • Garantir que o controlador processe corretamente diferentes tipos de solicitações HTTP (GET, POST, PUT, DELETE, etc.).
  • Verificar a validação correta dos dados de entrada.
  • Garantir a interação adequada com a lógica de negócios (serviços).
  • Assegurar a formação correta de respostas HTTP, incluindo códigos de status e corpo da resposta.
  • Verificar o tratamento de exceções e erros.

Exemplo de teste unitário usando o framework xUnit e a biblioteca Moq:

// Arrange
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);

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

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