I think the most promising approach is to "freeze" time for the duration of the test. Various approaches have been discussed. I think something like this would work well:
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/195144
Here's a similar approach of my own design: