Es kann einfacher sein, Komponententests durchzuführen, wenn der Abfrage-Generator verwendet wird. Nehmen wir an, Sie haben ein Repository, das einige Daten basierend auf der komplizierten Liste von Bedingungen abfragt. Und Sie möchten sicherstellen, dass, wenn eine bestimmte Bedingung in das Repository übergeben wird, einige andere Bedingungen in der Abfrage hinzugefügt werden. Im Falle von DQL haben Sie zwei Möglichkeiten:
1) Um Fixtures zu verwenden und die reale Interaktion mit DB zu testen. Was ich etwas lästig und unehrlich finde.
2) Um den generierten DQL-Code zu überprüfen. Das kann Ihren Test zu zerbrechlich machen.
Mit QueryBuilder können Sie es durch Mock ersetzen und überprüfen, dass "andWhere" -Methode mit erforderlichen Parameter aufgerufen wird. Natürlich sind solche Überlegungen nicht anwendbar, wenn Ihre Abfrage einfach und nicht von Parametern abhängig ist.
Aber gibt es keinen Overhead bei der Analyse der DQL-Zeichenfolge im ersten Fall? Oder der Builder erstellt als Ergebnis auch die gleiche DQL-Zeichenfolge? –
Ja, QueryBuilder erstellt die DQL-Zeichenfolge für Sie. Danach wird DQL sowieso geparst. – Dennis