Mock-Objekte im Spiel [2.0]

8

Ich möchte meine Play-Anwendung testen, indem ich Mock-Objekte während eines Tests zur Verfügung stelle. Von meinem Kopf aus gibt es ein paar Möglichkeiten, dies zu tun.

  1. Geben Sie beim Testen eine alternative Routendatei an
  2. Verwenden Sie Dependency Injection und suchen Sie zur Laufzeit nach einem globalen Wert

Ich bin mir nicht sicher, was machbarer ist oder wie man es macht. Jede Einsicht würde sehr geschätzt werden.

    
Jacob Groundwater 07.04.2012, 09:47
quelle

4 Antworten

13

Es gibt einen dritten Weg; Erstellen Sie Ihren Controller als eine Klasse oder ein Merkmal zum Testen. Hier ist ein einfaches Beispiel.

Ihre Eigenschaft + Implementierung:

%Vor%

In Ihrer Controller-Klasse:

%Vor%

Jetzt können Sie einige Komponententests durchführen.

%Vor%     
Blake Pettersson 11.04.2012 22:03
quelle
6

Ich hatte die gleiche Frage und experimentierte einige Optionen:

  • Kuchenmuster
  • Injektion über implizite
  • Frühling

Sie können den Code auf github hier sehen.

    
Yann Simon 03.12.2012 13:38
quelle
3

Meine Lösung ähnelt der von Blake, außer dass ich es ohne Controller als Klassen gemacht habe. Sie können die Quelle hier abrufen.

    
Jason Pearson 28.08.2013 21:45
quelle
2

Als Referenz habe ich ein Beispiel für die Verwendung von Play's Plugin-Framework hinzugefügt, um mockige Objekte während des Tests zu injizieren.

  1. Ссылка

Bei Verwendung dieser Methode kann zum Testzeitpunkt ein mockiges Plugin bereitgestellt werden:

%Vor%

Das MockInjector kann verwendet werden, um Controller-Objekte oder andere injizierbare Komponenten bereitzustellen.

Hinweis : Ich habe den Blogeintrag geschrieben, und jeder ist frei, alle Inhalte aus dem Blog hierher zu migrieren.

    
Jacob Groundwater 25.04.2012 09:22
quelle