I think I finally figured out the source of one of my frustrations of setting up a complicated test context, like I’m trying to do for a project I’m currently working on, is that we spend all this effort in our codebase being sure that objects can only be created via our complicated logic paths (i.e. Service Objects, etc). But then for the test we go and manually set all this stuff up again. What I really want to do is setup my test context via the exact same code paths that will be used in production to set them up, so I get all the same side effects.

And I want the tests to be fast.