WordPress tarafından gönderilen e -posta nasıl test edilir

WordPress siteniz aracılığıyla bir e -posta almak önemlidir. Birisi size ürününüzde bir sorun olduğunu mu söylüyorsunuz, yoksa iyi bir iş yaptığınızı söylemek için uğrayın, e -postayı aldığınızdan emin olmanız gerekir. Çoğu zaman, e -postanın WordPress sitesinde veya WordPress eklentisindeki işlevlerinin olup olmadığı konusundaki testlerimiz, formları doldurmayı, e -postamızı kontrol etmeyi ve doğru olup olmadığını görmeyi içeriyor. Verimsizdir ve insan zamanından proaktif yatırım gerektirir. Daha iyi ve daha tutarlı bir şekilde yapmak için bir program yazalım.
Bu makale bir test e -postası kullanmakla ilgilidir. Çoğu Phunit ile otomatik entegrasyon testleri yazmakla ilgili olacaktır. İlgili araçların kısa bir bölümü de vardır. Yerel testler ve hafif-müşteri testleri içerir. Bu katman oradaydıktan sonra eklenmenizi önerdiğim katman budur. Bu makaledeki testler, PHP ünitesi testinin temel testini genişleten WP_UNITTESTCase kullanacaktır. Başlamadan önce, sizin için hazırlamak için WP CLI yoluyla bir test hazırlamalısınız. Bu, son tork makalesi Iain Poulson’a dahildir ve WordPress’teki test birimleri hakkında Pippin Williamson serisini de okumak isteyebilirsiniz.
PHPMilerle Mock Diğer sistemlerle entegre olan kodlar için testler yazarken genellikle “yapay” nesneler yapar. Bu, durdukları nesneyle aynı kamu yangına sahip, ancak yan etkiler yaratmayan veya teste bağımlılığa ek komplikasyonlar eklemeyen bir nesnedir. Doğru bir taklit, yalnızca ilgili tüm kodlar nesne yönelimli olduğunda ve genel yangınlar her nesne bir arayüz tarafından tanımlandığında mümkündür. WordPress’i tanımlamaz. Bu, WordPress’te taklit edemeyeceğiniz anlamına gelmez. Brainmonkey ve WP_Mock kütüphanesi, kancalar da dahil olmak üzere birçok WordPress API’sının alay edilmesine yardımcı olur. WordPress birimleri, WP_MAIL tarafından kullanılan phpmailer örnekleri için alaycı araçlarla gönderilir. WP_unittestCase kullanılırken, Mockphpmail örneği genellikle WP_mail () tarafından kullanılan bir Global PHPmail örneği ile değiştirilir. Mockphpmailer phpmailer’i genişletir ve ayrıca gönderilen tüm e -postaları izler. Bu, WP_MAIL’e iletilen argüman verildiğinde WP_MAIL ve PHPMiler’in sonuçlarını test etmemizi sağlar. Bu makale esas olarak nasıl yönetileceği ve kullanılacağı ile ilgilidir. Yapay doğruluk kullanımını sınırlar. Çekirdeğinde kullanılan bir WP_MAIL taklit kullanarak, testimizin WP_Mail Core WordPress testi kadar doğru olduğunu biliyoruz. Onları mükemmel yapmaz. Pratik olarak, test etmeyi oldukça güvenilir bir yol haline getirir. Bu makalenin sonunda, bu yöntemin üzerine ek test katmanları eklemek için kullanabileceğiniz diğer araçlara bağlantılar var, ancak bu yöntemle başlayacağım.
Örneği test_retrieve_phpmailer_instance () kullanarak alabiliriz. Şimdi nasıl yapılacağını göreceğiz. Test durumu yapmak, eklenti testinizde temel bir test durumu olan soyut bir sınıfa sahip olmak için genel bir modeldir. Sınıf wp_unittestcase genişletecek. Daha sonra, gerekirse, belirli test türleri için bir temel oluşturmak üzere sınıfı genişletebilirsiniz. Email_test_case yaparak başlayalım: <? Php/**
* Test durumu – 1. adım
*/
Özet Sınıf e -posta_test_case genişleyen wp_unittestcase {
/** @mirasdoc*/
Kamu işlevinin düzenlenmesi () {
ebeveyn :: setup ();
}
/** @mirasdoc*/
Genel işlev yırtma () {
Ebeveyn :: Yüzyışı ();
}
} Şu anda, bu yeni bir şey eklemiyor, bu sadece başlangıç. Üst sınıftan uçtuğumuz kurulum ve yıkım yöntemi, her bir test arasında her şeyi yeniden düzenlemek için kullanılır. WordPress, PHPMiler için Global kullandığından, yapay postalar gönderilen her e -postayı izleyebilir. Bu yararlıdır, ancak test arasında her şeyin yeniden düzenlenmesini sağlamak istiyoruz.
Yeni Mockphpmail örneğini WP_Mail tarafından kullanılan Global'e yerleştirmek için reset_phpmailer_instance işlevini kullanabiliriz. Bunu sadece güvende olmak için ortam ve yıkımda yapalım. reset_mailer ();
}
/** @mirasdoc*/
Genel işlev yırtma () {
Ebeveyn :: Yüzyışı ();
$ this-> reset_mailer ();
}
/**
* Mektubu yeniden ayarlayın
*
* @return bool
*/
Reset_mailer () korumalı işlev () {
Return reset_phpmailer_instance ();
}
/**
* Yapay bir postacı alın
*
* The_retrieve_phpmailer_instance () testini sar
*
* @return Mockphpmailer
*/
Korumalı işlev get_mock_mailer () {
the_retrieve_phpmailer_instance () testini geri yükle;
}
} Bir taklitten iki nedenden dolayı yeniden düzenlemek için bir yöntem yaptım. İlk olarak, kodu tekrar ediyorum. Daha da önemlisi, daha sonra bu sınıfı, phpmailerle alay etmek için farklı yöntemler kullanarak testler yapmak için genişletmek veya Phpmailer’den farklı e -postaların nasıl gönderileceğini genişletmek isteyebilirim. Bu, alt sınıfın bu durumda bu davranışı değiştirmesini sağlar.
Nedeni, MockphpMiler örneğini almak için neden işlev etrafında bir sarma yaptığımı açıklıyor. Ayrıca, çekirdek kullanımından daha açık olan phpdocblock dönüşünün ek açıklamasına sahip olduğum, bu da phpstorm’da kullanılmasını kolaylaştırıyor. WP postası için bir entegrasyon testi yazarak daha ileri gitmeden önce test edilecek bir şeye ihtiyacımız var. E -posta gönderen bir işlev oluşturalım ve kimin hedeflendiğini, konu ve içeriği değiştirmemize izin verelim: slug_send_email function ($ to, $ öznesi, $ headers = ”) {{) {
wp_mail ($ to, $ subion, $ mesaj, $ başlık);
} Bu işlev hiçbir şey döndürmez. BT ünitesini test edemeyiz. Ancak entegre bir sistem üzerindeki etkiyi – phpmailer WordPress ile test edebiliriz. Üç özellik alıcı, konu ve mesajın her biri için bir entegrasyon testi yapalım.
Tüm bu testler bir sınıfta yaşayabilir, yapalım, test senaryolarımızı genişletelim: Şimdi birkaç test yazabiliriz. E -posta konusunu test edin E -postanın konusuyla başlayalım, çünkü bu en basit olanıdır. Bir mesaj göndermeliyiz, ardından yapay bir postacı nesnenin konusu tarafından yakalanan konuları gönderilmeyi beklediğimiz şeyle karşılaştırmalıyız. Bunun için Get_Sent () Mock Mailer yöntemini kullanabiliriz. Bu, bu yapay posta aracılığıyla gönderilen ilk mesajı döndürür. İsteğe bağlı olarak diğer mesajlar için isteyebiliriz, ancak test arasındaki mektubu kasten yeniden düzenleriz. Get_cent () yöntemi, e -mail hakkında bilgi dizisini geri yükler. Bir dizin konudur. “Gönderilen” bir mesaj konusunu almak için kullanabiliriz. <? Php
Genel işlev test_subject () {

$ to = ‘Birisi W. Birisi ‘;
$ sucning = ‘öznesi’;
$ Message = ‘Mesaj’;
slug_send_email ($ ila, $ sucs, $ mesaj);
$ mailer = test_retrieve_phpmailer_instance ();
$ this-> assertSame ($ öznesi, $ mailer-> get_cent ()-> öznesi);
} Bu testte, değişkenlerde test ettiğimiz işlevler için tüm argümanları hazırlıyoruz. Sonra işlevi çağırmak için kullanırız. Sonra Mock Mailer örneğini yakaladık ve konuyu aldık. Değişkenlerdeki işlevlerimiz için argümanları depolamak, bir ifade için beklenen değer olarak kullanılmasını kolaylaştırır.
E -posta gövdesini test etme E -posta gövdesini test etmek benzer olacaktır. Sadece bir satır içerikle test yapmanın adil bir test olduğunu düşünmüyorum. Bu test için birkaç satır kullanacağız. Her şeyi biraz karmaşık hale getirir, çünkü beyaz boşluğu karşılaştırmak karmaşıktır. WordPress test durumunu kullanmaktan aldığımız ek ifadelerden biri, AssertDiscardWhitespace testiydi. Bu, dizenin içeriğini aynı, azaltılmış alan olarak test eder: e -posta testinin alıcısının test edilmesi e -postanın alıcısı karmaşıktır. E -posta bir e -posta adresi olarak veya ad formunda verilebilir . Buna ek olarak, bir veya daha fazla e -posta adresinden WP_mail argümanına ve dolayısıyla test ettiğimiz işlev argümanına bir e -posta adresine veya diziye devam edebiliriz. Bu durumların her biri için bir teste ihtiyacımız olacak. Basit başlayalım, isim olmadan, sadece e -posta. Bu test için, ulaşmak için Mock Maileer yardımcı program işlevini get_recipient () kullanıyoruz. Bu bağlamda, işlev standart sınıf nesnelerini döndürür. Özellik adresini kontrol edebiliriz: İşe yaradığını bildikten sonra, ad ve e -postayı ayarlayarak bir komplikasyon katmanı ekleyebiliriz. Son testle aynı ifadeye ihtiyacımız olacak, ancak bu sefer adresi kontrol edeceğiz. Şimdi son testimiz için birkaç alıcıya bir e -posta göndereceğiz. Bu noktada daha ileri giderek, birçok alıcının iki formun bir karışımında olup olmadığını merak etmelisiniz. Ya da dizideki bazı mesajlar geçersizse. Bu iyi bir zihin. Testi eklemelisiniz. CC, BCC, Ek ve diğer başlıklar ne olacak?
Temel e -posta testini görmenizi ve test ettiğiniz gerçek koda benzer bir yaklaşımı nasıl kullanabileceğinizi görmenizi tavsiye ederim. Başka bir e -posta test aracı Bu makale, WordPress e -posta entegrasyonunu test etmekle ilgilidir. Kod entegrasyonunuzu WordPress e -posta özellikleriyle test ediyoruz. Bu, e -posta işlevlerini test etmenin önemli bir parçasıdır. Bu yaklaşımın avantajlarından biri – harici bir sunucuya gerek yok – aynı zamanda bir sınırdır. Bu tür test geçtikten sonra, gerçek sunucuyu ve gerçek istemciyi test etmek de önemlidir. Mailhog, yerel gelişim için yararlı bir araçtır. Bu, aksi halde yerel olarak depolanan e -postanın gerçekten gönderilmesini önler. Yerel ortamınızda gönderilen e -postaları görüntülemek için e -posta istemcileri gibi yollar sağlayan basit ve genişletilmiş bir kullanıcı arayüzü elde edersiniz. MailTrap, otomatik testlerde kullanılmak üzere tasarlanmış gerçek bir SMTP sunucusu sağlayan bir hizmettir. Dürüst olmak gerekirse, bu makalede kullanmadığım tek araç. İçine koydum çünkü yığınımda bu tür testi geliştirdiğimde daha fazla keşfetmek istediğim araçlar listemdeydi, bu yüzden paylaşmak istiyorum. KHA’nın bir parçası olarak kullandığım ve çok fazla değer elde ettiğim, asit üzerinde e -posta kullandı. Bu hizmet bir browserstack gibidir, ancak e -posta içindir. E -postanızı bir adrese gönderirsiniz ve size tüm e -posta istemcilerinde nasıl göründüğünü gösterirler ve hatta yararlı bir özetle sorun olasılığını vurgular.

admin

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir