Haven't you ever written tests that assert that certain things happen or do not happen along the way? We use mocks all the time to, say, make sure that the code doesn't load the entire db in memory. Then it's there as a regression if somebody down the line wants to do that exact thing for some reason.
Unfortunately, with LLMs you have to write these tests for every little thing.
And then there's the endless code duplication, reinventing of existing code and libraries etc.