In the early days of developing our Home Control System we realised we needed some test hardware and sensors to test its functionality, to try out new things, and to understand the user experience before we purchased or developed the (potentially expensive) hardware required. To facilitate this, we enabled the concept of objects being 'virtual' in our models. This means they behave exactly as if they were there but the physical interaction at the hardware level doesn't happen.
This is achieved by simply marking the object (light, thermostat, appliance, etc.) as virtual in the configuration of our Home Control System. It's a single check box! The great thing about this approach is that once the hardware is installed, we simple uncheck the box and it will just start working as planned and tested :-)
We also use virtual sensors in our contextual smart home and these enable some very powerful features.