Hi,
A couple of things that I have tried before.
1. If the intention is to perform a refactor where the code changes are large, but the expected changes to the catalog are small, I would recommend looking at:
Depending on what versions of Puppet you are looking at, you may have to hack on it a bit.
2. Environments are useful for detecting potential changes in combination with --noop. You should be able to target an agent to your new environment (containing the changed code)
puppet agent -td --environment new_env --noop
And verify the impact of changes before you make any changes.
The main problem with environment is that they do not work correctly with types and providers.
3. Although the cost of writing and maintaining rspec-puppet (ie: unit tests) can be quite high. Refactors are where they really shine. If you have good test coverage, then after a refactor, you should be able to see what expectations you have broken and have to update your tests accordingly.