Comment tester à l'unité la recherche en texte intégral dans ASP.NET MVC
-
03-07-2019 - |
Question
Je viens de commencer à utiliser ASP.NET MVC et TDD. J'ai lu que lors des tests unitaires, vous devriez vous concentrer sur le test de votre code, et non sur d'autres systèmes, tels que la base de données. Cependant, que se passe-t-il lorsque des fonctionnalités essentielles résident dans la base de données?
J'ai utilisé la série MVC Storefront comme guide initial pour la configuration de mes projets et modèles. Comme la recherche en texte intégral est essentielle, je l’ai configurée comme une fonction de mon référentiel
IQueryable<HealthOrganization> SearchOrganizations(string phrase);
Maintenant, la logique de cette recherche nécessite une fonction table avec le texte intégral et quelques autres fonctions dans la base de données. La logique dans ces fonctions est impossible à obtenir exactement dans le fakerepository. Quelle est votre recommandation sur la meilleure stratégie pour effectuer des tests unitaires et effectuer une analyse TDD sur la recherche?
La solution
Ce n'est pas un test unitaire, c'est un test d'intégration. Vous pouvez donc difficilement le mettre en œuvre comme le TDD.
Je suppose que votre code ne fait pas grand chose mais appelle la base de données. Donc, vous n'avez pas à tester beaucoup. Si vous pouvez simuler l'appel de la base de données au niveau le plus bas, vous pouvez vérifier si l'appel a lieu. Si cela devient très compliqué, il vaut mieux ne pas écrire de test unitaire pour cela. Ce ne sera que difficile à maintenir.
Pour écrire le test d'intégration, vous avez besoin d'une vraie base de données.
Autres conseils
Vous pouvez créer une base de données de test contenant un ensemble d'éléments connus, puis vérifier que le code de recherche renvoie les résultats que vous attendez.