嘲弄Couchbase

for*_*has 5 java mocking couchbase

我有一个基于Java的数据访问层,可以与Couchbase进行交互.为了将单元测试应用于该层,我想模拟Couchbase.

浏览网络我遇到了这个项目,它也在GitHub托管.我想用它,但遗漏了一些基本的例子.

也许有人之前尝试过,可以为我提供一些Java的基本用法?

sca*_*ved 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);
}
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看整个测试类:

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

或者这里的整个项目(这是一个简单的 Couchbase/Spring/API 示例)

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