Question

J'essaie d'envelopper ma tête en commençant à implémenter des tests unitaires dans un projet C # qui utilise des seaux AWS S3.

Malgré seulement l'examen brièvement, je comprends que presque tout ce qui est externe au projet doit être moqué de «garantie» des résultats prévisibles.

En bref, j'essaie de passer une classe statique (qui est à la fois abstraite et scellée) comme un argument qui restreint le paramètre à une interface que j'ai définie (pour le moment étant uniquement composée de AWSClientFactory.CreateAmazonS3Client(string, string, RegionEndpoint).

Cependant, je ne peux pas comprendre comment faire passer cette classe par référence (AWSClientFactory), et grâce à des recherches approfondies, je ne vois aucune façon de le faire.

Comme je vais devoir passer par le cloud un autre fournisseur (qui imitera l'API S3) à travers cette même méthode, j'aurais pensé que cela aurait été une solution acceptable, à la fois à ce sujet et à la transmission de classes simulées implémentées via l'interface.

Quelle serait la meilleure façon de mettre en œuvre cela avec le même type de structure, par laquelle des méthodes identiques sont appelées de différentes classes statiques?

Était-ce utile?

La solution

Vous ne pouvez pas obtenir une instance de classe statique. Ainsi, vous ne pouvez pas obtenir de référence, car il n'y a rien pour obtenir une référence. C'est pourquoi vous ne devriez pas abuser des classes statiques, si vous prévoyez d'écrire des tests unitaires plus tard.

Pour réaliser ce que vous voulez, vous pouvez créer votre propre interface et faire des implémentations de cette interface. Une de cette implémentation enveloppera AWSClientFactory.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top