The answer to the question, in my opinion, is "Object Oriented, it seems, is all that TDD people think about."
Why? I dont know. Perhaps they are all Java programmers who have been infected with the disease, forcing everyone to rely on six layers of indirection, dependency injection, and interface adapters.
Java programmers seem to like to complicate things in order to "save time later."
I recommend applying some Agile rules to your TDD: if this does not cause a problem, then do not fix it. Do not follow the design.
In practice, I find that if static methods are well tested, then they will not cause errors in their calling.
If static methods execute quickly, then they don't need a layout.
If static methods work with materials from outside the program, you may need a layout. In this case, you will need to model many different types of function behavior.
If you need to mock a static method, remember that there are ways to do this outside of OO programming.
For example, you can write scripts to process the source code into a test form that calls your layout function. You can link different object files that have different versions of the function in test programs. You can use linker tricks to override a function definition (if it didn't work out nested). I'm sure there are a few more tricks that I have not listed here.
Zan lynx
source share