2009-04-29 5 views
1

Ich habe gerade angefangen mit ASP.NET MVC und TDD. Ich habe gelesen, dass man sich beim Komponententesten auf das Testen des Codes konzentrieren sollte, nicht auf andere Systeme wie die DB. Was passiert jedoch, wenn sich wesentliche Funktionen in der Datenbank befinden?Wie Einheit Test Volltext-Suche in ASP.NET MVC

Ich habe die MVC Storefront-Serie als erste Anleitung zur Einrichtung meiner Projekte und Muster verwendet. Als Volltextsuche wesentlich ist, habe ich das oben als eine Funktion in meinem Repository in der Datenbank

IQueryable<HealthOrganization> SearchOrganizations(string phrase); 

Nun ist die Logik dieser Suche braucht eine Tabellenwertfunktion mit Volltext und einige andere Funktionen einstellen. Die Logik in diesen Funktionen ist unmöglich genau im Fakepository zu erhalten. Was ist Ihre Empfehlung für die beste Strategie, dies zu testen und TDD bei der Suche zu tun?

Antwort

1

Dies ist kein Komponententest, es ist ein Integrationstest. Sie können TDD also kaum so implementieren.

Ich nehme an, dass Ihr Code nicht viel tut, aber die Datenbank aufruft. Sie müssen also nicht viel testen. Wenn Sie den Datenbankanruf auf der untersten Ebene verspotten können, können Sie testen, ob der Anruf stattfindet. Wenn dies sehr kompliziert wird, ist es besser, keinen Komponententest dafür zu schreiben. Es wird nur schwer zu pflegen sein.

Um den Integrationstest zu schreiben, benötigen Sie eine echte Datenbank.

+1

Diese Art ist von dem, was ich dachte. Aber wenn Sie eine Anwendung haben, bei der die Suche ein wichtiges Feature ist, möchten Sie nicht zuerst den Such-Test entwickeln, um ihn zu testen? Könnten Sie mit dem Integrationstest beginnen? –

+0

@rundbom: Du kannst, ich würde es einfach nicht tun. Das Schreiben von Integrationstests ist zeitaufwendig. Mit TDD möchten Sie schnell sein. Wenn nicht, wird der "Fluss" unterbrochen. Und es gibt noch einen anderen Grund. Mit TDD wollen Sie erreichen, dass _Ihr_ Code tut, was Sie versuchen zu tun. Es testet nicht, ob das ganze System wie erwartet funktioniert. Es ist schwer zu erklären, aber wenn ein Integrationstest fehlschlägt, hat er eine andere Bedeutung als wenn ein Komponententest fehlschlägt. –

0

Sie können eine Testdatenbank eine Reihe von bekannten Elemente erstellen enthält, dann überprüfen Sie die Suchcode gibt die Ergebnisse, die Sie erwarten ..

Verwandte Themen