Ich habe eine Factory und eine Reihe von Spezifikationen erstellt, um einen aggregierten Root zu erstellen und zu validieren. Zur Zeit habe ich einige Tests für die Fabrik, die die Spezifikationen für das Produkt der Fabrik nennen, aber ich frage mich, ob das genug ist. Aus einer Entwurfsperspektive könnte es besser sein, die Fabrik an die Spezifikationen ihres Produkts zu koppeln, da sie eng miteinander verbunden sind.
Wenn eine Spezifikation für ein aggregiertes Root-Produkt für die Validierung und nicht für die Erstellung verwendet wird, ist es sinnvoll, sie innerhalb der Factory aufzurufen?
Oder ist ein Komponententest gut genug?
Die Antwort hängt wahrscheinlich davon ab, wie Sie Ihre Spezifikationen verwenden und ob der Code während des Erstellungsprozesses stark abbricht.
Spezifikationen können für fast alles verwendet werden, was Ihnen einfällt. Auf einer grundlegenden Ebene sind Spezifikationen lediglich steuerbare bedingte Anweisungen, die in Objekte eingekapselt sind. Wo auch immer der Code bedingte Logik verwendet, könnte man diese Logik wahrscheinlich in Spezifikationen umwandeln, wenn der Entwickler das Gefühl hat, dass es eine Rechtfertigung gibt.
Es ist nichts falsch daran, Spezifikationen im eigentlichen Code zu verwenden, solange es den Code besser nutzbar, wartbar oder lesbar macht. Es ist auch nicht falsch, Spezifikationen zu erstellen, die nur in Tests verwendet werden. Spezifikationen sind einfache Objekte, die Kopplung von Code mit Spezifikationen auf die eine oder andere Art scheint aufgrund der relativen Einfachheit der meisten Spezifikationen keinen großen negativen Einfluss auf die Wartung oder Wiederverwendbarkeit zu haben.
Wenn eine Spezifikation für ein Aggregat Wurzelprodukt wird für verwendet Validierung, anstatt für die Erstellung, macht es Sinn, es auszurufen in der Fabrik?
Ja, aber wahrscheinlich nur, wenn Sie Probleme oder ein mangelndes Vertrauen in das Produkt der Fabrik haben.
Oder ist ein Komponententest gut genug?
Ja, eine Spezifikation aus einem Komponententest aufzurufen, kann gut genug sein, um die Gültigkeit eines Fabrikprodukts zu beweisen (zumindest was die Spezifikation betrifft). Ich verwende jedoch oft keine Spezifikationen in meinen Komponententests, nur wenn ich Schwierigkeiten mit etwas habe, oder es ist Teil der Logik, die ich teste.
Tags und Links validation factory-pattern domain-driven-design aggregate specification-pattern