2015-12-11 14 views
6

Szukam klienta golang dla Cassandry z obsługą testów jednostkowych. Znalazłem kilka bibliotek jakKlient Golang dla Cassandra

  1. Goosie (nie utrzymuje dłużej)
  2. gocql (dowolny biblioteki klienta bez wsparcia badawczego jest bezużyteczny dla mnie)
  3. gocassa (ten sam problem jak wyżej)

Czy ktoś może zaproponować mi dowolną bibliotekę klientów, która ma to, czego szukam?

+0

Co rozumiesz przez testowanie wsparcia? gocql jest zdecydowanie najdojrzalszy i ma duży wkład. – PieOhPah

+0

Używamy testu jednostkowego gocql i can. Wymaga to zdefiniowania naszego własnego interfejsu, który działa głównie jako pośrednik kodu bazowego gocql, ale pozwala nam zastąpić implementację za pomocą kodu pośredniczącego lub makiety. – sberry

+0

@sberry * gocql.Session, którego używamy w gocql do interakcji z kassandra nie jest interfejsem. Jak zapewniasz symulacyjną implementację? Czy możesz wskazać mi dowolny kod, który masz? – tazo

Odpowiedz

2

Jest to bardzo prosty przykład tego, co miałem na myśli w komentarzach:

type CassAPI interface { 
    GetFoo(rowKey string) (someType, error) 
} 

type CassWrapper struct { 
    cass *gocql.Session 
} 

func (cw *CassWrapper) GetFoo(rowKey string) (someType, error) { 
    // do things with cw.cass 
    return someType 
} 

W kodzie aplikacji instancją CassWrapper zostaną wykorzystane, a w testach wystąpienie niektórych makiety lub odgałęzienie byłby używany, który byłby zgodny z tym samym interfejsem CassAPI.

+0

Ale w jaki sposób używany jest stan bazy danych? Na przykład, jeśli odczyt w Cassandrze ma się nie udać, w jaki sposób fałszywy kod może sygnalizować niepowodzenie? –