Skip to content

(feat) Testes em nível de service e controller #193

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
isaacmsl opened this issue Jan 27, 2024 · 5 comments · May be fixed by #194
Open

(feat) Testes em nível de service e controller #193

isaacmsl opened this issue Jan 27, 2024 · 5 comments · May be fixed by #194
Labels
enhancement New feature or request

Comments

@isaacmsl
Copy link
Owner

isaacmsl commented Jan 27, 2024

Motivo

Já nos deparamos várias vezes com bugs que só acontecem quando uma requisição é feita para o sistema. Atualmente só testamos a nível de repository e isso acaba nos deixando cegos com o que acontece no controller e consequentemente no service.

Objetivo

Realizar testes de service e controller.

@isaacmsl isaacmsl added the enhancement New feature or request label Jan 27, 2024
@isaacmsl
Copy link
Owner Author

Como exemplo de problema que só foi identificado a nível de controller, cito #183

@isaacmsl isaacmsl changed the title (feat) Testes a nível de controller (feat) Testes em nível de service e controller Jan 27, 2024
@RamonJales
Copy link
Collaborator

Testamos isso com junit?

@isaacmsl
Copy link
Owner Author

isaacmsl commented Jan 27, 2024

Isso, @RamonJales . Precisa esquecer do @DataMongoTest pois esse tipo de anotação nos permite testar coisas específicas para repositórios mongo. Usando @SpringBootTest no lugar, é possível fazer o @Autowired com qualquer service. Exemplo:

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTests {
    @Autowired
    UserService userService;

    @Test
    void shouldThrowIllegalArgumentoGoogleClient() {
        assertThrows(IllegalArgumentException.class, () -> userService.welcome(""));
    }
}

@RamonJales
Copy link
Collaborator

Dessa maneira estaríamos fazendo um test ent-to-end(pelas minhas pesquisas), ou seja, o test passaria pelo controller, pelo service e chegaria no repository, depois faria o mesmo percurso para retornar a resposta. O que não seria muito interessante, pois o propósito é testar o controller. Correto?

Dese modo, deveríamos usar a anotação @WebMvcTest, que nos permite testar os controllers da nossa aplicação. E ela vem com um método chamado MockMvc que nos permitiria mockar nossos objetos.

No entanto, confesso que não está muito claro para mim como usar utilizar os mocks de objeto. Não faz muito sentido esse conceito.

@RamonJales
Copy link
Collaborator

@RamonJales RamonJales linked a pull request Jan 27, 2024 that will close this issue
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants