Frage

Ich habe einen (Scala) -Code im Spiel, der JPA für den Zugriff von DB verwendet.Funktioniert gut.Ich möchte jedoch meinen Code testen, der einen Mock-EntityManager benötigt.Ist das möglich?

Mein Test wird in Specs2 (durch Erweitern von PlaySpecification) geschrieben und mit JUnit ausgeführt.Ich verwende Mockito, um den EntityManager zu verspotten.Aber ich würde erwarten, dies mit anderen Gerüsten tun zu können.

Hier ist mein Code aussehen:

generasacodicetagpre.

Wenn es nicht möglich ist, diesen Code zu testen, gibt es einen alternativen Ansatz für den Datenzugriff, der empfohlen wird?

War es hilfreich?

Lösung

Es gibt anscheinend keine Möglichkeit, einen Mock-EntityManager hier zu verwenden, zumindest keine, die ich finden konnte. Also musste ich mein Design überarbeiten.

wird Sargent von ArTSAFE vorgeschlagen, ein separates DB-Persistenz-Subprojekt auf der Mailingliste zu erstellen: https://groups.google.com/d/msg/play-framework/1u-_jbtiuqg/l5_9o4ycfomj . Ich bin nicht so weit gegangen, aber ich habe eine Lösung gefunden, die für mich funktionierte, indem ich eine separate DAO-Schnittstelle definierte.

Ich lege den ganzen JPA-Code in eine Dao-Eigenschaft - die gesamte Implementierung ist da drin. Es gibt auch ein Begleitobjekt, um eine Singleton-Instanz bereitzustellen. Wie so:

generasacodicetagpre.

Jetzt ändere ich meine Controller in Merkmale, mit einem Hinweis auf den Dao verstanden nicht. Ein Begleitobjekt legt die Dao-Instanz auf das Singleton-Objekt fest. Dadurch wird vermieden, dass Änderungen an der Routes-Datei vorgenommen werden (nicht müssen Sie die Controller instanziieren). Wie so:

generasacodicetagpre.

Das funktioniert also einfach genug mit dem Standard-JPA-Code, wenn die App läuft. Wenn ich jedoch testen möchte, kann ich ein Mock-Dao wie so einfügen (dies verwendet Mockito):

generasacodicetagpre.

Vielleicht ist dies nicht der ideale Ansatz, aber es funktioniert bisher. Ich wäre immer noch daran interessiert, andere Vorschläge zu hören.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top