2014-05-14 140 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