Question: How do we write testable code?
Answer: SOLID Principles
Single Responsibility Principle
@theadoranwodo
interface Input {
Data fetch();
}
interface Output {
DataObject convertToObject
(String result);
}
interface ProcessManager {
String process(Data data);
}
class ProcessJob {
// ...
ProcessJob
(Input input, Output output, ProcessManager
processManager
) {
this.input = input;
this.output = output;
this.processManager = processManager;
}
DataOutput process() {
Data data = this.input.get();
String result = this.processManager
.process(data);
return this.output.convertToObject(result);
}
}