2014-05-14 9 views
5

Ich habe eine Java-basierte Datenzugriffsschicht, die mit couchbase interagiert. Um Unit-Tests auf diese Ebene anwenden zu können, möchte ich Couchbase vortäuschen.Mocking Couchbase

Im Internet surfen ich stieß this project, die auch in github gehostet wird. Ich möchte es verwenden, aber einige grundlegende Beispiele fehlen.

Vielleicht hat jemand es schon einmal versucht und kann mir einige grundlegende Verwendungen in Java zur Verfügung stellen? Persönlich

Dank

+1

Das Projekt während offiziell von Couchbase unterstützt ist Geflecht tot aus Java Interessenten für etwa ein Jahr schon wegen dieses Fehlers: https://github.com/couchbase/CouchbaseMock/issues/11. Wenn man einen Eimer nicht öffnen kann, ist der Zweck des Ganzen eher unklar. –

Antwort

3

bei der Prüfung von Couchbase Unit-Tests unter Verwendung von ich nicht eine dieser beiden Projekte verwenden, ich habe gerade Mockito verwenden die Couchbase zu verspotten nennt.

Im Idealfall sind alle Ihre Anrufe an Couchbase in DAOs gut gekapselt. Mockito erlaubt mir, das zu liefern, was ich in Bezug auf Json-Payloads usw. erwarte, aber gleichzeitig kann ich Timeout und andere Ausnahmen simulieren.

Als einfaches Beispiel, wo Sie überprüfen, was passiert, wenn Couchbase während einer Hinzufügeoperation eine Ausnahme auslöst, würden Sie Folgendes tun (Ich erwarte eine Laufzeitausnahme, da ich die frühere Ausnahme abfange und erneut einreibe, weil sie nicht wiederherstellbar ist dieses Beispiel):

@Test(expected = RuntimeException.class) 
public void testSaveUserFailsOnAddDueToTimeout() { 
    when(couchbase.incr(anyString(), anyInt())).thenReturn(0L); 
    when(couchbase.add(anyString(), anyObject())).thenThrow(InterruptedException.class); 
    this.userDao.saveUser(SOURCE); 
} 

Sie können die ganze Testklasse sehen hier:

https://github.com/scalabilitysolved/couchbase-java/blob/master/src/test/java/com/scalabilitysolved/couchbase/dao/UserDaoTest.java

Oder das ganze Projekt hier (die eine einfache Couchbase ist/Frühjahr/API Beispiel)

https://github.com/scalabilitysolved/couchbase-java

+0

Tanks, das ist ein guter Ansatz, aber in diesem Sinne möchte ich noch wissen, wie man couchbase mock project benutzt. – forhas

+0

Hey @forhas, wenn dies Ihre Frage beantwortet, würden Sie es als akzeptiert markieren? Vielen Dank! – scalabilitysolved