[rspec-users] Cucumber - Testing ActionMailer

Ben Mabey ben at benmabey.com
Tue Apr 28 00:51:09 EDT 2009


James Byrne wrote:
> I need some help with this.  I have installed email-spec (courtesy of
> BMabey) and I have configure things thusly:
>
>   Scenario: E-Mail Exchange Rates to notify parties
>     Given a currency exchange feed from the Bank of Canada
>     When the currency exchange retrieval script runs
>     Then I should receive an email
>
> Then /should receive (an|\d+) e-?mails?/ do |amount|
>   amount = 1 if amount == "an"
>   unread_emails_for(current_email_address).size.should == amount.to_i
> end
>
>
> ../environments/test.rb
> # Tell ActionMailer not to deliver emails to the real world.
> # The :test delivery method accumulates sent emails in the
> # ActionMailer::Base.deliveries array.
> config.action_mailer.delivery_method = :test
> config.gem 'bmabey-email_spec', :lib => 'email_spec'
>
>
> class MailerPublic < ActionMailer::Base
>   def forex_daily_notice(address,rates)
>     rates_effective = Date.today.to_s(:db)
>     recipients  address.to_a
>     from        "ForexService at harte-lyne.ca"
>     reply_to    "support at harte-lyne.ca"
>     subject     "#{rates_effective} - Foreign Exchange Rates Notice"
>     body        :rates_effective => rates_effective, :rates => rates
>   end
> end
>
>
> ./views/mailer_public/forex_daily_notice.text.plain.erb
> Canada Customs foreign currency exchange rates for
> currency conversion of shipments made on <%=@rates_effective%>
>
> When I run this
>
> ./bin/script.rb
> ...
> # Format and email the results.
> if fx_hash_array
>   puts "got an array"
>   send_to = 'test_email at example.com'
>   MailerPublic.deliver_forex_daily_notice!(send_to,fx_hash_array)
>   puts ActionMailer::Base.deliveries.length
>   ActionMailer::Base.deliveries.each { |m| puts m }
> end
>
> Then I see this:
>
> got an array
> 0
>
> This is my first attempt at using ActionMailer so no doubt I have
> overlooked something basic.  Can anyone tell me what it is?
>   


Looks right to me.  To be honest though I have not used ActionMailer 
outside of Rails (where it just works out of the box).  I don't see 
anything wrong with the approach you are taking.  Maybe the rails 
mailing list could provide better advice.   Sorry, I couldn't be of any 
help.

-Ben




More information about the rspec-users mailing list