1
resposta

OPEN CLOSED PRINCIPLE em Testes de Unidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeDentro do pacote businessRule em cada pacote, tem regras de negocio relacionadas com alguma funcionalidade, por exemplo, commitAppointment, tem regras de negocio relacionadas a marcar / alterar uma consulta no sistema: Segue o exemplo abaixo: Insira aqui a descrição dessa imagem para ajudar na acessibilidadePara atualizar uma consulta eu tenho regras de negocio e para cadastrar também, onde a LÓGICA é a mesma em ambos, mas o de update recebe um AppointmentUpdateDTO e o register AppointmentRegisterDTO pois os dto's para ambas funcionalidades são diferentes. mas a regra de negocio é a mesma por isso fiz a separação dessa maneira, para não ter que criar a lógica 2 vezes, tanto para update, quando para registrar. segue um exemplo:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidadeE a proxima print é onde a lógica se encontra (sendo reutilizada nas 2 prints acima)

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

--------------------------//-------------------------- 1-) Dúvida: Gostaria de saber se essa abordagem está correta. 2-) Dúvida: Como eu poderia montar essa estrutura em testes? lembrando(testes de unidade). Eu criaria um pacote businessRule e criaria da mesma forma que está os testes dessa forma principal aí? ou por exemplo, eu poderia fazer da seguinte forma: Eu crio o pacote appointmentService e crio classes com testes relacionadas as regras de negocio para cadadastrar/atualizar um appointment tudo dentro desse pacote service ou deixo separado um pacote só para essas regras de negocio em si? Pq lembrando, eu também chamo essas validações no service através do metodo validations.forEach(v-> v.validation()...); Então essas 2 formas teriam sentido para mim mas n sei qual a melhor. 1- Deixar essas validações em um pacote só de regras de negocio -> pacote businessRule (Exclusivo) 2- Deixas essas validações dentro do pacote service onde teram outros testes de services juntos com esses. ----------------------//------------------------------ Outra dúvida: Dentro de businessRule/registerDentist/PasswordFormat -> Tenho uma validação do formato da senha para registrar um dentista. (método statico) porém para trocar a senha, eu preciso dessa validação também, no caso esse método statico que é responsavel por verificar o formato da senha, então eu utilizo ele em dois lugares, essa (REGRA DE NEGOCIO), onde seria melhor eu deixa-lo então? na pasta raiz businessRule? pois estou usando em mais de 1 funcionalidade.

1 resposta

Olá, Victor! Vamos lá, vou tentar te ajudar com suas dúvidas.

1-) Sobre a abordagem que você está utilizando, ela parece estar correta. Você está seguindo o princípio de reutilização de código, o que é muito bom. No entanto, é importante lembrar que cada caso é único e depende muito do contexto do projeto. Se você perceber que essa abordagem está tornando seu código mais complexo ou difícil de manter, pode ser uma boa ideia reconsiderá-la.

2-) Em relação aos testes, a estrutura depende muito do que você quer testar. Se você quer testar as regras de negócio individualmente, pode ser uma boa ideia criar um pacote separado para elas. Por outro lado, se você quer testar o serviço como um todo, incluindo as regras de negócio, pode ser melhor manter tudo no mesmo pacote. Uma estratégia comum é ter um pacote de testes que espelha a estrutura do código principal, assim fica fácil de saber onde estão os testes para cada parte do código.

Sobre sua outra dúvida, a localização do método de validação de senha depende de como você organiza seu código. Se você está usando esse método em mais de um lugar, pode ser uma boa ideia movê-lo para um local mais centralizado, como a pasta raiz businessRule. No entanto, se você acha que ele pertence mais a uma funcionalidade específica, pode ser melhor deixá-lo onde está. O importante é que ele esteja em um lugar que faça sentido no contexto do seu projeto.

Espero ter ajudado e bons estudos!