Eine Datenbankanwendung, an der ich gerade arbeite, speichert alle Arten von Einstellungen in der Datenbank. Die meisten dieser Einstellungen dienen dazu, bestimmte Geschäftsregeln anzupassen, aber es gibt auch andere Dinge.Zugriff auf globale Anwendungseinstellungen
Die App enthält Objekte, die speziell eine bestimmte Aufgabe ausführen, z. B. eine bestimmte komplizierte Berechnung. Diese Nicht-UI-Objekte sind Unit-getestet, benötigen aber auch Zugriff auf viele dieser globalen Einstellungen. Die Art, wie wir dies jetzt implementiert haben, besteht darin, den Objekten Eigenschaften zu geben, die zur Laufzeit vom Application Controller gefüllt werden. Beim Testen erstellen wir die Objekte im Test und geben Werte zum Testen ein (nicht aus der Datenbank).
Das funktioniert besser, auf jeden Fall viel besser als alle, die diese Objekte Einstellungen Objekt eine globale brauchen --- das macht natürlich effektiv Unit-Tests unmöglich :) Nachteil sein können, dass Sie manchmal ein Dutzend festlegen müssen Eigenschaften, oder Sie müssen diese Eigenschaften in Unterobjekte "perkolieren" lassen.
Also die allgemeine Frage ist: Wie bieten Sie Zugriff auf globale Anwendungseinstellungen in Ihren Projekten, ohne die Notwendigkeit für globale Variablen, während immer noch in der Lage, Einheitscode testen? Dies muss ein Problem sein, das 100-mal gelöst wurde ...
(Anmerkung: Ich bin kein allzu erfahrener Programmierer, wie Sie bemerkt haben; aber ich liebe es zu lernen! Und natürlich, ich habe bereits Forschung zu diesem Thema, aber ich bin wirklich auf der Suche nach Erfahrungen aus erster Hand)