É que eu me empolgo rsrsrs, mas entendo, sempre me falam que preciso ser mais objetivo.
- Ao escrever funções, minimize os "side effects" e faça com que suas funções retornem valores sempre que possível. Assim, você pode testar as funções de forma isolada, constituindo a base para os seus testes unitários.
Essa parte do side effect
que você se refere, só para ter certeza, é:
A function is said to have a side-effect when the function changes a non-local state or when its output is not deterministic
Nesse caso de fato é uma coisa que é um pouco problemática. Pois normalmente as funções que a gente desenvolve alteram arrays que são fornecidos por referência. Mas entendo a motivação da sugestão, vou pensar em algumas formas de lidar com isso.
Codifique pensando em interfaces (ou algo semelhante, como traits ou classes abstratas). Dessa forma, nos seus testes, você pode trocar um objeto/classe real, como as câmeras, por outros de teste (como uma câmera virtual, por exemplo), através da injeção de dependência.
Bem interessante essa sua sugestão, acho que isso vai ser uma das minhas primeiras abordagens para começar a desenvolver testes.
Muito obrigado!