Ich starte ein neues Projekt und bemühe mich sehr, TDD zu verwenden, um das Design voranzutreiben. Ich habe jahrelang Druck gemacht und endlich die Genehmigung erhalten, die zusätzliche Zeit für dieses Projekt zu verwenden, während ich lerne, wie man es richtig macht.
Dies ist ein neues Modul, um in ein bestehendes System eingebunden zu werden. Gegenwärtig erfolgt der gesamte Datenzugriff über Webservices, die größtenteils nur ein dünner Wrapper für gespeicherte Datenbankprozeduren sind.
Eine Voraussetzung ist, dass ich für ein bestimmtes Geschäft alle Bestellungen zurückschicke, die für diese Anwendung als gültig gelten. Eine Bestellung gilt als gültig, wenn ihr Versanddatum innerhalb eines bestimmten Bereichs vom Eröffnungsdatum des Geschäfts liegt (dies gilt für neue Geschäfte).
Jetzt kann ich diese Logik nicht in den Anwendungscode einfügen, da ich nicht eine Million Bestellungen zurückbringe, nur um das Dutzend zu erhalten, das für diesen Shop gelten könnte, da die oben genannte Einschränkung gilt.
Ich dachte, ich könnte den Datumsbereich an eine GetValidPOs-Prozedur übergeben und diese Werte verwenden, um die gültigen POs zurückzugeben. Aber was ist, wenn wir eine weitere Anforderung zu einer gültigen Bestellung hinzufügen?
Und wie teste ich das und stelle sicher, dass es weiterhin funktioniert? Wir verwenden kein ORM und es ist unwahrscheinlich, dass es passiert. Und ich kann die DB in meinem Test nicht aufrufen.
Ich stecke fest.
Mein anderer Gedanke ist, einige Mocks zu haben, die gültige Daten zurückgeben, andere, die ungültige Daten zurückgeben, und das lokale Repository eine Ausnahme auslösen zu lassen, wenn ungültige Daten von GetValidPOs proc (oder das zum Testen verwendete Mock).
Macht das Sinn? Oder gibt es einen besseren Weg?
UPDATE: Ich kann anscheinend EF verwenden. Jetzt muss ich nur noch herausfinden, wie man es verwendet und testbar macht, während ich mich immer noch auf gespeicherte Prozeduren verlassen kann und die Schwierigkeit, Daten auf mehrere Datenbanken verteilt zu haben.