2015-05-01 16 views
5

AmbienteRails 4, RSpec 3.2 - come mockup metodo deliver_now di ActionMailer di sollevare eccezioni

rubino 2.2.1, Rails 4.2.0, RSpec-core 3.2.2, RSpec-aspettative 3.2.0, RSpec-deride 3.2.1, RSpec-rail 3.2.1, RSpec di supporto 3.2.2

ho il seguente metodo

def send_event_alert_email(event_id) 
    event = Event.find_by(id: event_id) 
    ... 
    ...  
    ... 
    EventAlertMailer.event_alert(event_id).deliver_now 

    create_alert(event) 
end 

ho bisogno di scrivere le specifiche che assicura che create_alert(event) non venga invocato quando EventAlertMailer.event_alert(event_id).deliver_now solleva eventuali eccezioni. Quindi la domanda di base è come simulare lo deliver_now per sollevare eventuali eccezioni che potrebbero effettivamente generare.

risposta

5

Ecco come verificare deliver_now metodo:

describe EventAlertMailer do 
    it 'sends email' do 
    delivery = double 
    expect(delivery).to receive(:deliver_now).with(no_args) 

    expect(EventAlertMailer).to receive(:event_alert) 
     .with(event_id) 
     .and_return(delivery) 

    MyClass.send_event_alert_email 
    end 
end