11.07.2015 Aufrufe

Download (10Mb) - HSR - Institutional Repository

Download (10Mb) - HSR - Institutional Repository

Download (10Mb) - HSR - Institutional Repository

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Bachelorarbeit: Mobile Quizlichkeit, Daten aus der Datenbank zu laden. Der ServiceLocator fungiert als eine ArtSchnittstelle, die angefragt wird um Services, in diesem Fall Repositories, zu erhalten. Sokann zu Testing-Zwecken beispielsweise ein Fake-<strong>Repository</strong> mitgegeben werden, um dieTests mit der Datenhaltung zu simulieren.AufbauMit Hilfe des ServiceLocators werden die Instanzen der Repositories, der Datenbankverbindungund des EntityManager verwaltet.Benötigt eine Klasse einen EntityManger, eine Datenbankverbindung oder ein <strong>Repository</strong>,fragt diese beim ServiceLocator nach einer Instanz. Der ServiceLocator prüft obbereits eine Instanz vorhanden ist. Wenn noch keine Instanz besteht, wird das Objekterzeugt und der anfragenden Klasse übergeben. Ist bereits eine Instanz vorhanden, sowird diese der anfragenden Klasse übergeben.Mit dieser Methode wird ein Faken der Objekte möglich. So können Testing-Klassen einMock-Objekt für den EntityManager, die Datenbankverbindung oder die Repositories imServiceLocator platzieren. Wenn danach die einzelnen Unit Tests auf den ServiceLocatorzugreifen, erhalten diese das Mock-Objekt für die Tests.Faking und MockingListing 8.1: Bevor die Unit Tests durchlaufen, setzt die Testing-Klasse ein Mock-Objekt der zutestenden Klasse im ServiceLocator ab.1 /∗∗2 ∗ @ s t a t i c3 ∗ @param Doctrine \Orm\ E n t i t y R e p o s i t o r y $ r e p o s i t o r y4 ∗/5 p u b l i c s t a t i c f u n c t i o n setQuiz<strong>Repository</strong> ( $ r e p o s i t o r y ) {6 s e l f : : $quiz<strong>Repository</strong> = $ r e p o s i t o r y ;7 }Listing 8.2: Die Testing-Klasse in PHPUnit erzeugt ein Mock-Objekt einer Klasse. Mit set-Methods() wird definiert, welche Methoden auf dem Mock-Objekt aufgerufen werden können.Anschliessend wird das Mock-Objekt im ServiceLocator gesetzt.1 $ t h i s −>quiz<strong>Repository</strong>Mock = $ t h i s −>getMockBuilder ( ’ R e p o s i t o r i e s \Quiz<strong>Repository</strong> ’ )2 −>d i s a b l e O r i g i n a l C o n s t r u c t o r ( )3 −>setMethods ( array ( ’ e x i s t ’ , ’ findById ’ , ’findByIdWithoutUser ’ , ’ findByName ’ ) )4 −>getMock ( ) ;56 S e r v i c e L o c a t o r : : setQuiz<strong>Repository</strong> ( $ t h i s −>quiz<strong>Repository</strong>Mock ) ;Listing 8.3: Benötigt ein Unit Test ein Quiz-Objekt, holt er dieses über den ServiceLocator. Davorhin ein Mock-Objekt der Quiz-Klasse gesetzt wurde, wird dieses Mock-Objekt zurückgegeben.Damit können Tests durchgeführt werden, ohne die reale Datenbank zu verwenden.1 /∗∗45 von 128

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!