I tried using this How do I test Pony emailing in a Sinatra app, using rspec? to test a Rails 3.1 app sending emails. The sending works fine, but I’m having a hard time getting the tests to work. Here’s what I have so far …
spec/spec_helper.rb
config.before(:each) do
do_not_send_email
end
.
.
.
def do_not_send_email
Pony.stub!(:deliver) # Hijack to not send email.
end
and in my users_controller_spec.rb
it "should send a greeting email" do
post :create, :user => @attr
Pony.should_receive(:mail) do |params|
params[:to].should == "nuser@gmail.com"
params[:body].should include("Congratulations")
end
end
and I get this …
Failures:
1) UsersController POST ‘create’ success should send a greeting email
Failure/Error: Pony.should_receive(:mail) do |params|
(Pony).mail(any args)
expected: 1 time
received: 0 times
# ./spec/controllers/users_controller_spec.rb:121:in `block (4 levels) in ‘
It looks like Pony’s not getting an email, but I know the real email is getting sent out.
Any ideas?
Here’s what I finally ended up with for the test …
The Pony.should_rececieve needs :deliver (not :mail), the do/end was changed a bit, and the post was done after the setup.
Hope this helps someone else.