【发布时间】:2018-02-15 09:14:29
【问题描述】:
我们有一个单元测试,我们正在测试促销代码的兑换。
我们需要检查数据库中是否存在两个参数:Entity & User
在你将看到的代码中,
- 我们创建
User和Entity的实例 - 插入数据库(使用@Repository)
- 也创建一个 DTO ..etc
因为RedeemService 会调用User 和Entity 服务来检查它们是否存在。
我觉得我们应该能够模拟(用户和实体服务),而不是做所有这些事情
这里是测试:
@Test
public void redeemPromoCodeTestValid() throws Exception {
String userId = "OOUser";
String fleetId = "F0001";
String promoCodeId = "AFTER_CHRIS";
User user = new User();
user.setId(userId);
user.setFleetId(fleetId);
user.setUserName("OOabcdefg");
userRepository.save(user);
EntityX entity = new EntityX(); //EntityX, because Entity is a reserved keyword..
entityRepository.save(entity);
String entityId = entityRepository.findAll().get(0).getId();
PromoCode promoCode = createPromoCode(promoCodeId);
promoCodeRepository.save(promoCode);
RedeemDTO add = new RedeemDTO();
add.setUserId(userId);
add.setEntityId(entityId);
String jsonString = this.asJsonString(add);
MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.put("/billing/fleets/"+ fleetId + "/promoCodes/redeem/" + promoCodeId).content(jsonString).contentType(CONTENT_TYPE);
mockMvcPromocode.perform(requestBuilder).andDo(print()).andExpect(status().isOk());
List<Wallet> find = walletService.findWalletByEntityId(entityId);
assertThat(find.size()).isEqualTo(1);
}
我是 Spring Boot 和单元测试模拟的新手,因此非常感谢任何建议。
谢谢。
【问题讨论】:
标签: spring unit-testing spring-boot mocking mockito