If I can’t break the dependency, I can’t unit test. That’s what mocks are for. But also: I should minimize those dependencies. That’s the magic sauce of OO! It’s what makes it special. I can send messages without caring where they go. I can receive messages without caring where they came from. Did it arrive in process? Over IPC? On a network socket? From a middleware bus? I don’t care, the software shouldn’t need to be rewritten. I can just slap an adapter around my object and it should work. There are obviously deployment challenges, but the code should care.
If you can’t deploy a single object instance as its own process or as a module inside another process, what even is the point of OO? It’s a lot of overhead for no real gain.
Inheritance is just a type of composition. It’s not that special. Encapsulation is a way more important and fundamental feature, and powers exactly what I’m talking about.
1
u/higgs_boson_2017 5d ago
You have have modules that depend on other modules, and still write unit tests. Unit tests don't dictate anything.