É importante que nos lembremos que o nosso objetivo aqui é de apenas permitir que os nossos arquivos dos drivers sejam testáveis. Para isso, precisamos apenas de definições simples e de protótipos para as rotinas dos SDKs que nossas lógicas chamam. Todo o resto é descartável. Podemos usar de arquivos de SDK… ‘falsos‘. 💡
Assim, o que eu faço é o seguinte:
- Faço um trabalho exploratório, identificando todos os cabeçalhos do SDK que são realmente usados e o que do conteúdo deles realmente é necessário pelo driver.
- Faço uma cópia destes arquivos para o diretório de support dos testes unitários.
- Nestas cópias eu faço uma edição pesada, limpando tudo que não é usado pelo driver, removendo dependências que podem ser simplificadas, transformando algumas macros em protótipo de funções, etc.
As atividades acima tomam um bom tempo, já adianto! 😅 O lado bom é que, depois de feitas, se no futuro o driver precisar de algo novo do SDK, basta incrementar estes arquivos com a novidade e tudo deve ser bem rápido!
Enfim, este é um assunto muito muito muito longo ⏱ e definitivamente está fora do contexto desta série. Para os mais curiosos, os arquivos de SDK ‘falsos’ que fiz para o nosso projeto estão a seguir:
Estou à disposição para tirar quaisquer dúvidas e, se acharem interessante, posso elaborar algum material sobre isso. Aguardo seu feedback! 🙂