Decoupling tests from implementation and increase their resilience
Without trying to sound tautological, the tests in your original question are coupled to your implementation because that's exactly what they are testing. 

You're testing that -


Remove is called on a database abstraction
The method doesn't throw an exception for an invalid slug
The method returns true when it finds something to delete
The method returns false when it does not find something to delete


These are all quite low level concepts, are any of them important? 

As a developer that's new to a code base, I look to the tests to tell me what's important and needs to be preserved. Most of the time, this boils down to behaviour that the user can observe and interact with.

If you re-focus your tests so that they ensure -


When there are Posts in the repository, a user can view them
When a Post is deleted, it is no longer listed on an index
When a Post is deleted, it can no longer be viewed


Then you will not be coupling them to such details as "my repositories return false when they can't find something to delete".