7
votes

Devrais-je utiliser une base de données en mémoire au lieu de se moquer de mes référentiels?

J'aime l'idée d'utiliser une base de données en mémoire telle que SQLite lorsque vous testez au lieu de créer des simulacres pour mes référentiels. De cette façon, je peux également tester le code de mes référentiels sans aucun problème de performance.

Quels sont les avantages et les inconvénients de cette stratégie?


0 commentaires

4 Réponses :


4
votes

Ma stratégie est lorsque vous testez mon code d'entreprise, je me moque de mon référentiel. Lorsque vous testez mon référentiel, je vous moque de ma couche d'accès aux données. J'utilise, autant que possible, code généré automatiquement pour ma couche d'accès aux données (LINQ-TO-SQL), donc il n'y a pas beaucoup à tester là-bas. Ce qu'il y a (truc de validation, manipulation de la propriété spécialisée), peut généralement être testé directement, sans se moquer. Si cela est absolument nécessaire (ou plus facile), je vais parfois simuler la couche de données avec une liste personnalisée dans le magasin de mémoire intégrée, voir mon blog sur http://farm-fresh-code.blogspot.com où j'ai écrit à ce sujet.


0 commentaires

5
votes

Je dirais que ces deux stratégies sont deux choses différentes. Comme vous l'avez dit, avec DB en mémoire, vous pouvez également tester vos référentiels, cependant, vous devez d'abord tester vos référentiels pour obtenir la séparation des préoccupations. Lorsque vous concevez votre système, peut-être selon le MVC, vous souhaitez que vos contrôleurs avant les modèles / référentiels, car, tout d'abord, vous devez décider de quoi voulez-vous faire et après avoir décidé quelles entités vont collaborativement atteindre cet objectif. Ainsi, peut-être créer des contrôleurs et des référentiels moqueurs d'abord est une meilleure façon, vous pouvez ensuite tester vos référentiels à l'aide de la base de données en mémoire s'il est vraiment facile à configurer.


1 commentaires

Oui, je crois que tu as raison. C'est à différentes choses utilisées pour atteindre différents objectifs.



7
votes

Si j'utilise un orj, j'ai généralement tendance à utiliser une base de données SQLite dans la mémoire de mémoire pour tester mes applications car je n'ai pas les frais généraux de la configuration des moqueurs et des résultats attendus. Il y a une vitesse de stimulation sur l'utilisation d'une base de données factice, mais je ne m'attends pas à ce qu'elle soit plus rapide que d'utiliser un simulacre. Si j'utilisais un adaptateur SQL, je voudrais probablement utiliser une maquette depuis autrement, je devrais probablement réécrire les appels.


0 commentaires

0
votes

L'utilisation d'une mémoire vous donne un avantage qui ne se moque pas. Utilisation de la base de données en mémoire, vous pouvez facilement modifier la mise en œuvre du code sans rien changer dans les tests. Par exemple, si vous utilisez un orj, vous pouvez déplacer le formulaire à l'aide de la méthode insert à Bulkinsert sans avoir à se moquer de la méthode molkinsert nouvellement ajoutée . < / p>


0 commentaires