为了账号安全,请及时绑定邮箱和手机立即绑定

Mockito - InjectMocks或如何在方法调用后获取新值

Mockito - InjectMocks或如何在方法调用后获取新值

幕布斯6054654 2022-08-17 12:28:44
我有以下类:public class DaoService {   private Dao dao;   private Map<String, Entity> map;   public DaoService(Dao dao, Map<String, Entity> map){       this.dao = dao;       this.map = map;   }   public create(Entity entity){      Dao.create(entity);      map.put(Entity.getName(), entity);   }}我想测试方法调用 realy 是否在映射中放置了一个新元素,当我使用另一个参数调用它时,它将具有等于 2 的大小。但我需要忽略 Dao.create()。我有以下测试类:@RunWith(MockitoJUnitRunner.class)public class DaoServiceTest {   @Mock   Dao dao;   @Mock   Map<String, Entity> map = new HashMap<>();   @InjectMocks   DaoService service;   @Test   public void testCreate(){      Entity entity = new Entity("Alex");   // name      service.create(entity);      assertEquals(map.size(),1);   // failNotEquals   }当我调用它将忽略但不会忽略时,我该怎么办?service.create(entity)dao.create(entity)map.put(entity.getName(), entity)
查看完整描述

1 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

问题是你用注释了,所以你是在调用一个模拟,而不是在你分配给 .您在这里想要的是监视初始化的 .所以你可以写map@Mockmap.size()HashMapmapmapHashMap

@Spy
Map<String, Entity> map = new HashMap<>();

或者您不能手动使用和注入模拟和常规。这样,断言也可以正常工作。WRT忽略,它被Mockito的设计忽略,除非你以其他方式配置它@InjectMocksDaoHashMapdao.create(entity)



查看完整回答
反对 回复 2022-08-17
  • 1 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号