Even if this is a bug, it's a pretty obscure one. It was frustrating the hell out of me until I found a workaround, so I thought I'd just post the details:
Given a find like this: def self.find_old User.all(:conditions => ['updated_at <= ?',Time.now - 1.day) ... Trying to set a message expectation will always fail: it "should find users" do User.should_receive(:all).with({:conditions => ['updated_at <= ?',Time.now - 1.day]}) User.find_old ... with the error: Mock 'Class' expected :all with ({:conditions=>["updated_at <= ?", Wed Jan 28 17:59:02 +0000 2009]}) but received it with ({:conditions=> ["updated_at <= ?", Wed Jan 28 17:59:02 +0000 2009]}) Expected and received here are identical. The only workaround I've found (the example here is simplified, but the datetime in the model where I discovered the bug is critical and so needs to be spec'd) is to wrap the Time call and the expectation in another format: User.all(:conditions => ['updated_at <= ?',(Time.now - 1.day).xmlschema]) and it "should find users" do User.should_receive(:all).with({:conditions => ['updated_at <= ?', (Time.now - 1.day).xmlschema]}) I'm on rspec 1.1.12 on rails 2.1.0 and I'm guessing the + in the formatted datetime is playing hell with a regexp somewhere. Unfortunately, I don't have time to dig in to it myself right now. I was seeing the same behaviour when I tried hash_including (:conditions => ['updated_at <= ?',Time.now - 1.day]) as part of the expectation. Thanks, Todd _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users