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

我有以下类:


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)


幕布斯6054654
浏览 143回答 1
1回答

守着星空守着你

问题是你用注释了,所以你是在调用一个模拟,而不是在你分配给 .您在这里想要的是监视初始化的 .所以你可以写map@Mockmap.size()HashMapmapmapHashMap@Spy Map<String,&nbsp;Entity>&nbsp;map&nbsp;=&nbsp;new&nbsp;HashMap<>();或者您不能手动使用和注入模拟和常规。这样,断言也可以正常工作。WRT忽略,它被Mockito的设计忽略,除非你以其他方式配置它@InjectMocksDaoHashMapdao.create(entity)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java