鉴于此服务,我想测试一下stuff对象的角色属性是否正确设置:
public void saveAStuffForAnEvent(Event whatever) {
if (whatever == null){
Stuff stuff = StuffBuilder().role(StuffRoles.DEFAULT).build();
stuffRepository.save(stuff);
} else {
Stuff stuff = StuffBuilder().role(StuffRoles.OTHER).build();
stuffRepository.save(stuff);
}
}
如何测试填充对象是否已使用 DEFAULT 角色正确创建?
使用俘虏。
在测试中创建字段@Captor注释如下:
@Mock
private StuffRepository stuffRepository;
@Captor
private ArgumentCaptor<Stuff> stuffCaptor;
然后在测试之后:
// when
subject.saveAStuffForAnEvent(event);
// then
verify(stuffRepository).save(stuffCaptor.capture());
assertThat(stuffCaptor.getValue().getRole()).isEqualTo(StuffRoles.DEFAULT);
或者如果是集成测试,那么:
// when
subject.saveAStuffForAnEvent(event);
//then
assertThat(subject.findAll().get(0).getRole()).isEqualTo(StuffRoles.DEFAULT);