我想对以下场景进行单元测试:
class Base {
public void doWork(Consumer<Pipe> consumer) {
try {
Pipeline pipeline = acquirePipeline()
consumer.accept(pipeline);
pipeline.sync();
} finally {
unlock();
}
}
}
class Worker extends Base {
// whatever...
}
class Service {
private Worker worker = ..
public void handle() {
worker.doWork((p) -> {
// run some code...
};
}
我的测试代码
class ServiceTest {
public test() throws Exception {
Worker worker = newMock(Worker.class);
worker.whileLocked(any(Runnable));
reply(worker);
Service service = new Service(worker);
service.handle();
verify(worker);
}
}
我有点嘲笑 Worker
,但为了 Service
为了跑得好,我不能嘲笑 doWork
(我想),如果我不嘲弄它,我会得到 NullPointerException
当代码运行时 doWork
因为数据成员没有初始化。
你知道怎么处理这样的案子吗?
1条答案
按热度按时间gmxoilav1#
你能考虑使用
Mockito
而不是EasyMock
?在这种情况下,有一种方法可以在模拟类上调用实方法。
我不使用
EasyMock
我试着找些东西来帮忙,但是找不到。