我有一个实体,它不用作 .verify() 中的参数,而仅用作该实体的属性。但是,我想捕获该实体,以便稍后使用assertEquals 来验证该实体的另一个属性。如果 .verify() 中根本没有使用该实体,这可能吗?
我发现,只有与 .when() 或 .verify() 一起使用时,我才能捕获参数。但这两者本身都没有意义,因为我直接使用或返回实体作为参数的唯一类是我也想测试的类。所以我对它们使用@Autowired,而不是@MockBean。如果我尝试以某种方式将实体包含在 .verify() 中,它会给出 NullPointerException
ArgumentCaptor<Entity> entityArgumentCaptor = ArgumentCaptor.forClass(Entity.class);
Mockito.verify(reportMock, Mockito.times(1)).doIt(Mockito.eq(entityArgumentCaptor.capture().getIdentifier()), Mockito.eq(null)); //not working
Entity entityArguments = entityArgumentCaptor.getValue();
assertEquals(entityState.completed, entityArguments.getState());
您想要捕获您的实体,然后断言其属性:
ArgumentCaptor<Entity> entityArgumentCaptor
= ArgumentCaptor.forClass(Entity.class);
Mockito.verify(reportMock)
.doIt(entityArgumentCaptor.capture(), Mockito.isNull());
Entity entityArguments = entityArgumentCaptor.getValue();
assertEquals(
entityState.completed,
entityArguments.getIdentifier().getState());