Refactor SnakObjectTest

Removes the strange inheritance and uses proper mocking instead.
The mock helps us to inject the abstract methods. We still test all methods in `SnakObject` not more and not less.