Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ronei-kunkel/tdd-exercises


https://github.com/ronei-kunkel/tdd-exercises

Last synced: about 1 month ago
JSON representation

Awesome Lists containing this project

README

        

# TDD-EXERCISES

## Steps

### with docker

`docker build --no-cache -t tdd-exercises:latest . && docker run -it --rm tdd-exercises`

1. build image: `docker build -t tdd-exercises:latest .`

2. run tests: `docker run -it --rm tdd-exercises`

### with docker compose for development

- build image and run tests: `docker compose up --build`

## Explicação para o eu lírico do futuro

Utilizo do multistage build do docker para, em uma imagem intermediária baseada na imagem do composer, copiar os arquivos de desenvolvimento do projeto.
Nessa imagem intermediária, com o composer que veio da imagem do composer, faço a instalação das dependências.

Em um outro estágio que é o da imagem final, utilizando como base a imagem de cli do php em cima do alpine linux, apenas copio o binário do composer e toda a pasta da aplicação que teve as dependencias instaladas pela etapa baseada na imagem do composer.

Isso torna a imagem final muito mais leve e evita que seja necessário fazer bind do volume da pasta vendor por exemplo.
Também deixa a aplicação completamente isolada, além de evitar que a vendor esteja ocupando espaço tanto no container quanto no host.

## Dúvida

- como contornar erro do php unit que fala que uma classe não pode ser dublada por ser final?
PHPUnit\Framework\MockObject\Generator\ClassIsFinalException: Class "TddExercises\Freight\User" is declared "final" and cannot be doubled