We have moved from Rails 2 to 3 and the changing Mailer syntax has caused us to rewrite some of our specs.
In Rails 2: Implementation: Mailer.deliver_job_application(job.id, user.id) Spec: Mailer.should_receive(:deliver_job_application).with(@job.id, @user.id) --- In Rails 3: Implementation: Mailer.job_application(job.id, user.id).deliver Spec: message = double message.should_receive(:deliver) Mailer.should_receive(:job_application).with(@job.id, @user.id).and_return(message) --- I turned the latter example into a matcher for RSpec 2 and I'm open for feedback. Here's a gist incase the inline formatting sucks: https://gist.github.com/798513 RSpec::Matchers.define :deliver do |message| chain :with do |*args| @with = args end match do |mailer| mail = double mail.should_receive(:deliver) mailer.should_receive(message).with(*@with).and_return(mail) end end Mailer.should deliver(:job_application).with(@job.id, @user.id) --- Is this a sane approach? Would it have been better to adapt the Mailer interface to comply with the specs? Best, Michael Guterl _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users