2014-05-14 181 views
5

我有一個基於java的數據訪問層與couchbase交互。 爲了將單元測試應用到這一層,我想模擬couchbase。嘲笑Couchbase

瀏覽我遇到的網this project它也承載於github。 我想使用它,但缺少一些基本的例子。

也許有人已經嘗試過它,可以提供我一些在Java中的基本用法?

感謝

+1

該項目,同時通過Couchbase正式支持是編織死從Java未來的一年左右已經因爲這個錯誤:https://github.com/couchbase/CouchbaseMock/issues/11。如果一個人不能打開一個桶,整個事情的目的是不清楚的。 –

回答

3

個人使用單元測試我不使用這些項目的任何測試Couchbase的時候,我只是使用到的Mockito模擬出的Couchbase調用。

理想情況下,您對Couchbase的所有調用都很好地封裝到DAO中。 Mockito允許我在json載荷等方面返回期望的結果,但同時我可以模擬超時和其他異常。

作爲一個簡單的例子,你在檢查如果Couchbase在添加操作期間拋出一個異常會發生什麼,你會做以下事情(我期待一個運行時異常,因爲我捕捉到先前的異常並重新拋出,因爲它是不可恢復的這個例子):

@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); 
} 

您可以查看整個測試類的位置:

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

還是這裏的整個項目(這是一個簡單的Couchbase /春/ API的例子)

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

+0

坦克,這是一個很好的方法,但考慮到這一點,我仍然想知道如何使用couchbase模擬項目。 – forhas

+0

嘿@forhas如果這回答你的問題,你會把它標記爲接受?謝謝! – scalabilitysolved