Refactor SnakObjectTest

Removes the strange inheritance and uses proper mocking instead.
This bit here confuses me. The test actually tests the mock of the abstract class, right? I don't think this is what mocks are for.