I agree with parent that unit testing privileged bare metal code is not always possible, at least not without spending 10x-100x dev time on writing tests.
Example: anything that directly accesses MMU or caches.
> How would you create a mock object for something that modifies the memory layout of the unit test while it is running?
There's two ways I can interpret "the unit test".
1) "How would you create a mock object for modifying the memory layout of the code being tested?" That's just a routine that shuffles around some bytes. Or marks parts of the address space to fault so it can simulate the contents.
2) "How would you create a mock object for modifying the memory layout of the code performing the test?" That wouldn't be a test. The code performing the test isn't inside its own simulation.
Example: anything that directly accesses MMU or caches.