【发布时间】:2020-07-15 12:10:14
【问题描述】:
我有一个抽象类,我想对其进行单元测试。
public abstract class Processor {
private final MyRepo repo;
protected Processor (final MyRepo repo) {
this.repo = repo;
}
public abstract MyResponse process(final Request req, final String id);
protected void saveRequest(final Request req, final String id) {
final Entity entity = Entity.builder()
.status(SUCCESS.name())
.build();
Entity entity = repo.save(entity);
LOG.debug("Entity Saved {}", entity);
}
protected boolean checkDupe(final Request req) {
return repo.check(request.getname(), LocalDate.parse(request.getDate()));
}
}
我有以下单元测试类:
@ExtendWith(SpringExtension.class)
public class ProcessorAbstractClassTest{
@Mock
private MyRepo repo;
@Test
public void shouldSaveRequest() {
Processor processor = Mockito.mock(
Processor.class,
Mockito.CALLS_REAL_METHODS);
MyRequest req = new MyRequest ("blah blah");
Entity entity = Entity.builder().build();
processor.saveRequest(req, "123");
//check object passed into save but not save
}
}
我想测试与save() 的交互并验证传递给它的对象实体。鉴于这是一个抽象类,而具体的 impl 类正在为依赖项提供 super(repo) ,我该如何实现这一点?
【问题讨论】:
标签: java spring junit mockito powermock