I'm firmly in the camp that you shouldn't mock the DB and have a local instance for testing but for external resources that you can't reproduce locally I think that's fine.
Otherwise I agree with you.
Otherwise I agree with you.
Which one you should do depends on how complex your interactions with the DB are.
Some apps (e.g. CRUD) have half of their business logic encoded in DB queries in which case faking the calls is a bad idea.
Others only do, like, 2 simple queries. In this case there's no point running an actual database outside of a couple of E2E tests.