2016-04-12 18 views
0

Kullanıcıları yönetmek için Devise kullanıyorum. Geliştirme modunda çalışır, ancak testte değil. Gelişimde, User.invite çağırıyor! başarılı bir davetiye gönderir. Testte, sessizce başarısız olur - hata yok, sadece davetiye ile ilgili tüm alanlar için bir sıfır değeri ve mailler sayısı artmaz.Invisible olayı, test ortamında bir davetiye oluşturmuyor

İşte benim test

require "rails_helper" 
describe "with inviting user" do 

    let(:user) { create(:user) } 
    before(:each) do 

     Devise.mailer.deliveries = [] 

     User.invite!({email: user.email}, user) 
    end 

    after(:each) do 
     Devise.mailer.deliveries.clear 
    end 

    it 'should generate invite token' do 
     expect(user.invitation_token).to_not be_nil 
    end 

    it 'should send an email' do 

     expect(Devise.mailer.deliveries.count).to eq(1) 
    end 
end 

Her iki testin başarısız (FactoryGirl ve RSpec kullanarak) şu şekilde görünür:

1) with inviting user should generate invite token 
    Failure/Error: expect(user.invitation_token).to_not be_nil 

     expected: not nil 
      got: nil 
    # ./spec/mailer/mailer_spec.rb:20:in `block (2 levels) in <top (required)>' 

    2) with inviting user should send an email 
    Failure/Error: expect(Devise.mailer.deliveries.count).to eq(1) 

     expected: 1 
      got: 0 

     (compared using ==) 
    # ./spec/mailer/mailer_spec.rb:28:in `block (2 levels) in <top (required)>' 

ben tür stumped. Herhangi bir fikir?

+0

Sadece FYI Ben de config.action_mailer.perform_deliveries = config/environment/test.rb dosyasında – nilatti

+0

değerini ayarlıyorum. Bunu ben de buna sahip oldum 'config.action_mailer.delivery_method =: test'? –

+0

Evet, varsayılan olarak ayarlandı: config.action_mailer.delivery_method =: test – nilatti

cevap

0

ActionMailer::Base.deliveries teslimatlarını kontrol ettiniz mi? Bahse girerim e-postalarınız orada.

+0

Aynı zamanda 0'da kalır. ActionMailer bir şey göstermediğinden Devise.mailer nesnesini kullanıyordum ve Devise'nin ActionMailer'i atladığını başka bir yerde gördüm . – nilatti

+0

Eğlenceli. Benim test env, 'ActionMailer :: Base.deliveries' kesinlikle benim Devise e-postaları ile doldurulur .... Benim ayarlarıma daha yakından bakacağız. Dev ortamınızda e-postanın aslında gönderiyor mu? :-) –

+0

Evet, gönderiyor - iş arkadaşımın iş e-posta adresinden bir tane gönderebilirim ve Thunderbird kutusundan - dev dosyasından çıkar. – nilatti

İlgili konular