JUnit + Mockito如何测试DAO层

时间:2017-04-01 07:37:52

标签: java spring junit mockito

我在项目中使用Spring,SpringMVC,Mybatis 第一次和Mockito一起玩。

在使用Mockito之前,测试代码看起来像这样

@Test
@Transactional
@Rollback
public void setNewUnifyPriceRoom() throws Exception {
    Map reqMap = new HashMap();
    reqMap.put("typeId", 21);
    reqMap.put("roomId", 19);

    roomDockingsMapper.setNewUnifyPriceRoom(reqMap);

    String isUnifyPriceRoom = roomDockingsMapper.isUnifyPriceRoom(19, 21);
    Assert.assertEquals("Y", isUnifyPriceRoom);
}

然后我找到了Mockito,因为我不想在测试期间触摸数据库。我试着写一个BeforeClass作为数据提供者。但是,在我执行了 setNewUnifyPriceRoom 操作

之后,当我尝试返回某些内容时,我陷入了困境
 private static RoomDockingsMapper mockRoomDockingsMapper;
    @BeforeClass
    public static void setup(){
        Map reqMap = new HashMap();
        reqMap.put("typeId", 21);
        reqMap.put("roomId", 19);
        mockRoomDockingsMapper = mock(RoomDockingsMapper.class);
        when(mockRoomDockingsMapper.setNewUnifyPriceRoom(reqMap)).thenReturn(??????);
    }

基本上我想做的是在执行 setNewUnifyPriceRoom 之后,然后在thenReturn部分设置 isUnifyPriceRoom 方法返回" Y"。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您不想嘲笑您正在测试的方法。您想模拟setNewUnifyPriceRoom内发生的数据库交互,以便您可以验证其余代码是否正常工作。