If you want to use unit tests with different Contract hooks and code paths, you should mock vault methods with test data using custom types. As mentioned, the mocked vault object is based on the actual vault object specification and ensures correct arguments are passed to it. It also does not allow invalid methods to be mocked. However, the actual data that each vault method returns will need to be constructed in the Contract unit tests and added to the appropriate mocked vault method.
The below example demonstrates custom types usage in the Smart Contract unit tests, however, the same approach should be used for Supervisor Contract tests. Note that types should be imported from the supervisor_contracts module and the SupervisorContracts380TestCase (or another version's) class should be used for the Supervisor Contract unit test.