Я хочу подделать новый тип класса, который не существует, который реализует интерфейс
возможно ли это?
например, у меня есть интерфейс
public interface Worker {
boolean execute(Job c);
}
У меня есть класс
public class CompositeWorker implements Worker {
private List<Worker> childWorkers = new ArrayList<>();
public List<boolean> execute(Job j){
return childWorkers.stream().map(w -> w.execute(j)).collect(Collectors.toList());
}
public addWorker(Worker worker) {
childWorkers.add(worker)
}
}
Для проверки:
public class CompositeWorkerTest {
private CompositeWorker worker;
@BeforeMethod
void setup() {
MockitoAnnotations.initMocks(this);
worker = new CompositeWorker();
}
@Test
test_worker() {
Worker worker_A = mock(Worker.class);
Worker worker_A = mock(Worker.class);
Job job = mock(Job.class);
when(worker_A.execute(job)).thenReturn(true);
when(worker_B.execute(job)).thenReturn(true);
worker.add(worker_A);
worker.add(worker_b);
List<boolean> results = worker.execute(job);
//assert results contains true
}
есть ли способ подделать / изменить Worker worker_A = mock(Worker.class);
на FakeWorker fakeWorker = mock(FakeWorker.class)
, который реализует Worker, но на самом деле его не существует
от NOT существует, я имею в виду, что нет определения для:
public class FakeWorker implement Worker
причина, по которой я хочу издеваться над другим классом, заключается в том, что тип работника уникален
public addWorker(Worker worker) {
childWorkers = childWorkers.stream().filter(w -> w.getClass() != worker.getClass())
.collect(Collectors.toList());
childWorkers.add(worker)
}