2016-04-04 21 views
0

Laravel 5'te e-postaları test etmeye çalışıyorum ve bir posta gönderildiğinde Swift_Mailer'un Illuminate\Mail\Events\MessageSending olayını tetiklediğini fark ettim.Laravel 5 testlerinde olayları nasıl dinleyebilirim?

Ancak yeni başladığımdan beri, bu olayı nasıl dinleyeceğimi ve temel ileti nesnesini nasıl alacağımı anlama konusunda sorun yaşıyorum?

Bunu denedim ama bu doğru değil yapın:

public function test_the_email_via_listening_to_message_sending_event() 
{ 
    $user = factory(User::class)->create(); 
    Event::fire(new UserWasCreated($user)); 

    Event::listen(Illuminate\Mail\Events\MessageSending::class, function($message){ 
     echo 'Hello'; 
    }); 
} 

Nasıl buna karşılık olarak bir test durumu ve tetik kodunda belirli bir etkinlik dinlemek için?

+0

https://laravel.com/docs/5.2/testing#mocking-events – ceejayoz

+0

Sol ben çalışmıyorum aynı – Rohan

cevap

0

laravel bir expectsEvents yöntem sağlar: https://laravel.com/docs/5.2/testing#mocking-events

$this->expectsEvents(Illuminate\Mail\Events\MessageSending::class); 
+0

ilgili yanıta Yorum alay olayları. Aslında, gönderilmeden önce e-postaları yakalamaya çalıştığım ve konunun, vücudun vb. Belirli bir şekilde olduğunu iddia ettiğim yüksek seviyeli fonksiyonel testleri yapmaya çalışıyorum. Bu yüzden gönderilmeden önce e-postayı ele geçirmenin ve üzerinde iddialar gerçekleştirmenin bir yolunu arıyorum. – Rohan

+0

@Rohan Bu durumda, Laravel'in Mail işlevselliği için kendi testlerini en iyi şekilde kontrol edebilirsiniz. https://github.com/laravel/framework/blob/5.2/tests/Mail/MailMessageTest.php – ceejayoz