2009-04-29 7 views
1

Je viens de commencer à utiliser ASP.NET MVC et TDD. J'ai lu que pendant les tests unitaires, vous devriez vous concentrer sur le test de votre code, pas sur d'autres systèmes, comme la DB. 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 essentiel que j'ai le mettre en place en fonction dans mon dépôtComment tester une unité de recherche de texte intégral dans ASP.NET MVC

IQueryable<HealthOrganization> SearchOrganizations(string phrase); 

Maintenant, la logique de cette recherche a besoin d'une fonction table avec texte intégral et d'autres fonctions dans la base de données. La logique dans ces fonctions est impossible à obtenir exactement correct dans le fakerepository. Quelle est votre recommandation sur la meilleure stratégie pour tester cette unité et faire TDD sur la recherche?

Répondre

1

Ceci n'est pas un test unitaire, c'est un test d'intégration. Donc, vous ne pouvez guère l'appliquer comme TDD.

Je suppose que votre code ne fait pas beaucoup, mais en appelant 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 tester si l'appel se produit. Si cela devient très compliqué, il vaut mieux ne pas écrire un test unitaire pour cela. Ce ne sera que difficile à maintenir.

Pour écrire le test d'intégration, vous avez besoin d'une base de données réelle.

+1

C'est un peu ce que je pensais. Mais, si vous avez une application où la recherche est une fonctionnalité importante, ne voudriez-vous pas développer la recherche Test d'abord pour tester le conduire? Pourriez-vous commencer avec le test d'intégration? –

+0

@rundbom: Vous pouvez, je ne le ferais pas. La rédaction de tests d'intégration prend du temps. Avec TDD, vous voulez être rapide. Sinon, le "flux" est interrompu. Et il y a une autre raison. Avec TDD vous voulez réaliser que votre code _your_ fait ce que vous essayez de faire. Il ne teste pas si tout le système fonctionne comme prévu. C'est difficile à expliquer, mais quand un test d'intégration échoue, il a une autre signification quand un test unitaire échoue. –

0

Vous pouvez créer une base de données de test contenant un ensemble d'éléments connus, vous vérifiez le code de recherche renvoie les résultats que vous attendez ..

Questions connexes