When I write a unit test i want to test the unit not the side effects the unit has globally. 

This is generally how you test a unit. you give it some inputs and make assertions against some outputs.

The value of unit tests is the speed. I'm running these unit tests in a pre commit and making them fast means they are not a burden. 

The other thing is that tests that do not do IO are safer to run as they will not need manual cleanup in the case of bugs.

As for not testing integration enough, that's valid feedback if it's true. 

As for testing private methods, I don't think I'm doing so.