Comment puis-je tester la logique de la base de données?


12

J'ai toujours un problème pour surmonter un petit problème en ce qui concerne TDD.

J'ai besoin d'une méthode qui obtiendra un certain jeu d'enregistrements de données filtrées de la couche de données (linq2SQL). Veuillez noter que j'utilise les classes générées par linq qui sont générées à partir du DBML. Maintenant, le problème est que je veux écrire un test pour cela.

est ce que je:

a) insérez d'abord les enregistrements dans le test, puis exécutez la méthode et testez les résultats

b) utiliser des données qui pourraient se trouver dans la base de données. Ne pas aimer cette logique car cela pourrait faire casser les choses.

c) qu'avez-vous jamais suggéré?

Réponses:


7

Variation sur (a).

Avoir une base de données de test ou une sous-section de la base de données qui peut être utilisée pour les tests. Lorsque vous configurez vos tests, ayez une routine qui initialise la base de données lorsque vous en avez besoin pour commencer les tests (cela peut être fait avant chaque test, le cas échéant). Cela peut inclure la suppression de données, l'insertion de données, etc. Exécutez ensuite vos tests. Dans la phase de démontage, nettoyez-vous après vous-même. Peut être répété autant que nécessaire, sans risque de perturber le système en direct (ce n'est pas une bonne idée de tester en utilisant les données de la base de données qui sont nécessaires pour autre chose).


1
Bonne réponse. J'aime créer des bases de données jetables à l'aide de sqlite. Ce n'est pas possible si vous souhaitez tester des éléments spécifiques à l'implémentation de la base de données (comme les déclencheurs, par exemple), mais cela permet une configuration / suppression rapide et sans danger.
bogeymin

1
@bogeymin - vous pouvez toujours configurer une base de données de test avec des déclencheurs si vous le souhaitez (vous pouvez créer la base de données entière avec un script pendant FixtureSetup)
Yaakov Ellis
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.