Flutter-geolocator: Realmente odeio métodos estáticos...

Criado em 28 abr. 2021  ·  3Comentários  ·  Fonte: Baseflow/flutter-geolocator

Na versão anterior do plugin eu podia instanciar um geolocalizador, era legal e meus testes de unidade estavam muito felizes com isso porque o geolocalizador podia ser zombado.

Agora tudo é estático... Existe alguma maneira nova que não envolva métodos estáticos?

Comentários muito úteis

O link também sugere criar wrappers/adaptadores/shims para dependências de terceiros e zombar deles, pelos motivos específicos que você mencionou. Dessa forma, você está zombando apenas do código que você possui (como você é o proprietário dos wrappers/adaptadores/calços).

Isso tem os seguintes benefícios:

  • Abstrai a API de terceiros que facilita a substituição quando necessário;
  • Reduz a superfície da API para apenas as partes que seu aplicativo precisa, tornando a API mais fácil de usar e entender do restante de seu aplicativo;
  • Não interromperá todos os seus testes quando a API de terceiros for alterada.

Vou encerrar esta questão, mas sinta-se à vontade para continuar a discussão ;)

Todos 3 comentários

@jaumard Admito que essa pode não ter sido a melhor escolha que fiz. No entanto, em minha defesa, a prática comum em testes e arquitetura de aplicativos em geral sugere que você não deve zombar do que não possui (leia mais aqui ).

Minha sugestão seria escrever um wrapper em torno do geolocalizador e zombar do wrapper.

Seu link é mais sobre TDD do que testes de unidade em geral. Além disso, se não zombarmos, o teste não passará, suponho, porque não há implementação nele ao executar o teste.

Também quero verificar se a geolocalização é chamada no meu código e verificar se o que faço com o resultado está correto. Tantas razões para você querer zombar de deps de terceiros :)

Também não zombe de deps usando network e faça seus testes sem rede, vai ser divertido :D ou até mesmo com realmente show network e ganhe 1 hora para executar seus testes lol

Mas sim, vou fazer meu próprio wrapper em torno do geolocator, apenas imaginando se algo foi incorporado antes de fazê-lo.

O link também sugere criar wrappers/adaptadores/shims para dependências de terceiros e zombar deles, pelos motivos específicos que você mencionou. Dessa forma, você está zombando apenas do código que você possui (como você é o proprietário dos wrappers/adaptadores/calços).

Isso tem os seguintes benefícios:

  • Abstrai a API de terceiros que facilita a substituição quando necessário;
  • Reduz a superfície da API para apenas as partes que seu aplicativo precisa, tornando a API mais fácil de usar e entender do restante de seu aplicativo;
  • Não interromperá todos os seus testes quando a API de terceiros for alterada.

Vou encerrar esta questão, mas sinta-se à vontade para continuar a discussão ;)

Esta página foi útil?
0 / 5 - 0 avaliações