OOP WordPress Pt.4: Entegrasyon testi için WordPress Test Suite ile hazırlanın

Bu dizideki önceki makalemde, WordPress eklentilerinin nesne yönelimli PHP’yi kullanarak nasıl derleneceğini gösterdim. Sonra birim testini tartıştım. Ünite testi, sistemin diğer tüm bölümlerinden tamamen izole edilen her bir bileşeni içerir. Birim testleri, nesnelerin veritabanları ve WordPress dahil herhangi bir bağımlılıkla nasıl etkileşime girdiğini umursamamalıdır. Bunun yerine, birim testi yaptıktan sonra, kodumuzun kodun bulunduğu ortam üzerindeki etkisini karşılamak için entegrasyon testi kullanıyoruz. Genel olarak, her iki test türü için phunit kullanıyoruz. Sadece farklı kullanıyoruz. Phunit’i, bu testleri veya hatta diğer test türlerini yapmak için kullanabileceğimiz test ve koşucu testi yazmak için kullanabileceğimiz bir ifadeler koleksiyonu olarak düşünebiliriz.
Evsiz Bum (VVV) değişen Topluluk Projesi WordPress Test Suite ile Entegrasyon Testi Vagrants kullanarak yerel WordPress oluşturmak için bir sistem sağlar. VVV’ye WordPress Core’u geliştirmek için tasarlanmış bir site dahildir. WordPress’i yüklediğim SVN deposu da test serisinin kaynağını yönetiyor. Bu site, eklentilerle WordPress test paketini çalıştırmak için kullanılabilir. Bu siteyi fikrinize açarsanız, WordPress test paketini içerdiğinden, WP_unittestCase yöntemi ve test paketindeki diğer sınıflar için doğru otomatik tamamlamayı almanız gerekir.
Diğer kaynaklar için, önceki tork makalesindeki VVV ayarlarını tartıştım. Arkadaşım Ahmad kısa süre önce farklı tork direklerinde yerel gelişim için alternatifler tartıştı. VVV’yi yüklemek için belgeleri de bulabilirsiniz. VVV ile bir WordPress Test Suit hazırlayın VVV yüklendikten sonra eklentiyi çalıştırabilmeniz gerekir, test, iskele testi için WP CLI komutu kullanılarak yapılır. Bu dizinin önceki makalesinde eklentiler hazırlamak için bu komutu nasıl kullanacağımı tartıştım. Eklentide, örnek eklentisi gibi, bu dizi için yaptım – bu bir docker kullanmaya geçmeden önce bir taahhüt. Eklenti dizininden kabuğu açın ve daha sonra bin dizinine geçin: CD yeri daha sonra kurulum komut dosyasını çalıştırın: Bash. Herhangi bir argüman: Phunit, Vagrant Docker ile bir WordPress test paketi hazırlar, bir zamanlar yerel gelişim için çok popüler bir çözümdü. Bazıları hala kullanırken, birçok geliştirici Docker’a taşındı, çünkü daha taşınabilirdi. Docker, Travis gibi CI/CD hizmetlerini kullanarak yerel geliştirme, yerel test ve otomatik testler için tam olarak aynı sunucuya sahip olmayı kolaylaştırır.
Şahsen, Docker’a tamamen geçtim. Bu çok daha esnektir ve Ubuntu, Windows ve Mac arasındaki çevre çevresel paylaşımını basitleştirir. Windows kullanıcısıysanız, Windows 10 Pro veya daha yüksek olduğunuzdan ve Hyper-V’yi etkinleştirdiğinizden emin olun. Docker ve Docker’ın temellerini yüklemek bu makalenin kapsamı dışındadır. Dürüst olmak gerekirse, Docker hakkında gerçekten hiçbir şey bilmenize gerek yok, ayrıca size çalışmanızı göstereceğim her şeyi elde etmek için nasıl yükleneceğiniz. Bu Docker hakkında çok havalı olanın bir parçası. Docker’ı yükleme talimatları aşağıdadır. Gutenberg projesinden sevdiğim birçok şeyden biri ilk Gutenberg’i deneyin WordPress yapmak için kullandıklarımızı güncellemek için bir fırsattır. Örneğin, şimdi JavaScript tabanlı arabirimler oluşturmak için React, Redux ve diğer çok güçlü araçları kullanıyoruz. Sonuç olarak, Gutenberg bize WordPress eklentisini geliştirmek için React, Redux veya diğer araçları kullanmak için bir sınıf referansı verdi. Gutenberg ile gelişebilmem, Gutenberg’e öğretebilmem, aynı zamanda bu yeni araçları kullanma şeklini öğrenmek ve ödünç alabilmem için Gutenberg’in gelişimini takip ettim. Şimdi Kaladera formu için her türlü otomatik test yaptığımızı optimize etmek için oldukça takıntılıyım, bu yüzden elbette Gutenberg’de nasıl çalıştığını okudum.
Bu nedenle, eklentiniz için WordPress test paketini çalıştırmak için bir Docker’ın nasıl ayarlanacağını göstermeden önce, Gutenberg Docker ortamını ve test paketini nasıl kuracağınızı ve kullanacağınızı keşfedelim. Bu serinin önceki makalesinde, besteciyi koşucu senaryosu olarak kullandım. Gutenberg, NPM komut dosyasını aynı nedenden ötürü kullanır – kodlama veya birim testi gibi genel görevleri her yürüttüğünüzde aynı argümanla aynı komutları gerçekleştirmeyi kolaylaştırır. Gutenberg test devresi sadece PHP testini değil, aynı zamanda JavaScript ünitesinin test edilmesi, WordPress JavaScript test devresini kullanarak ve sonuna kadar test edilmesini içerir. Orada çok güzel şeyler var, ama bu yazı için kapsamın ötesinde. Endişelenmeyin, JavaScript için otomatik testleri daha sonra tartışacağım. Açıkçası, meraklıysanız Gutenberg’de nasıl çalıştığını görün. Gutenberg’i WordPress eklentisi kurulumuna yüklediğinizde, üretim ortamında kullanım için optimize edilmiş bir sürüm elde edersiniz. Bu mantıklı, çoğu insanın Gutenberg’i kullanması gerekiyor. Çoğunlukla insan değilsiniz, silin ve baştan başlayın. Bu bu şekilde daha uzun sürecektir. Git’i yüklediğinizi ve nasıl kullanılacağını bildiğinizi varsayıyorum. Varsayım yanlışsa, özür dilerim ve GIT kullanımı hakkında yazdığım makaleyi ve bu GIT ile ilgili kursu Kodu Bilmekten sunuyorum. Ayrıca, arkadaşım Morten, Git kavramını açıklamak için çok güzel bir ders verdi, WordCamp Us 2015’te yeni başlayanlar için önerdiğim.
Open Shell – Örneğin OSX Terminal Uygulamasını Kullanarak – Yerel WordPress Site Eklentisi Dizininde. PHPStorm kullanıyorum, bu yüzden eklentiler dizini sadece terminale sürüklüyorum ve mucizevi bir şekilde orada. O zaman Github’dan Gutenberg’in en son sürümünü klonlamanız gerekir. GIT CLONE [E -posta Korumalı]: WordPress/Gutenberg.Gitkandian, tamamlandıktan sonra, yeni Gutenberg CD’sine taşındıktan sonra Gutenberg’imiz var, ancak JavaScript dosyası yok. Yalnızca Webeds kullanılarak derlenen kaynak dosyalarımız var. WebPack NPM kullanılarak yüklenir ve NPM komut dosyası kullanılarak çalıştırılır. Önce NPM bağımlılıkları yükleyin:
NPM’yi yükleme Şimdi NPM: NPM çalıştırma kullanılarak JavaScript İstemcileri oluşturmak için ihtiyacımız olan her şeye sahibiz, şimdi yükleyiciyi çalıştırarak test paketini ayarlayabiliriz: Bash ./bin/install-docker.sh olmalı. Http: // localhost: 8888/adresindeki bir bağlantı noktası işçisiyle yeni oluşturduğunuz WordPress sitesini görebilmelisiniz. Ayrıca test ünitesini bu komutla çalıştırabilmeniz gerekir: NPM çalışır Testleriniz JavaScript ünitelerini yavaşça çalıştırabilir: NPM Test ünitenizi çalıştırır Tofu, Gutenberg’e katkıda bulunmak ve amaçlandığı gibi işlevi kanıtlamak için testler yazmanız gereken her şeye sahiptir. . Gutenberg testi hakkında daha fazla bilgiyi şu adresten öğrenebilirsiniz: https://gititub.com/wordpress/gutenberg/blob/master/docs/testing-overview.md
Kendininkini yapmak ister misin? Gutenberg’de, süresi dolmuş PHP sürümünü test etmek ve diğer yerel ortam türlerini desteklemek için birçok ayrıntılı çalışma yapıyorlar.
Eklenti geliştirme için modern bir Docker ve PHP’nin nasıl kullanılacağına dair bir örnek istiyorsanız, Chris Zarate tarafından bir kod örneği öneririm ve GitHub’da orijinal kodu bulabilirsiniz. Docker Gutenberg konfigürasyonu Chriszarate/WordPress/kullanır. Burada bir desen hissetmelisin. Örnek eklentime Gutenberg’den orijinal örnek kod Chris’e bir dizi şey ekledim. Bu bir docker-composer.yml: sürüm: ‘3.1’jasa:
WordPress:
Resim: WordPress
Liman:

– 8888: 80
çevre:
Wordpress_db_password: örnek
ABSPATH:/USR/SRC/WordPress/
Ses:
-Wordpress:/var/www/html

Kli:
Resim: WordPress: CLI
Ses:
-Wordpress:/var/www/html

MySQL:
Resim: MySQL: 5.7
çevre:
Mysql_root_password: örnek
Mysql_database: wordpress_test
Wordpress_phunit:
Resim: Chriszarate/WordPress-Phpunit
çevre:
Phunit_db_host: mysql
Ses:
– .:/başvuru
– Testsuite:/TMP
Besteci:
Resim: Besteci
Ses:
– .:/başvuru
Ses:
Test Odası:
WordPress: Bir Docker-Compose.yml dosyamızdan sonra sunucuyu şu komutla başlatabiliriz: Docker-Compose -f Docker-Compose.yml Up -d bize http: // localhost: 8888 adresindeki WordPress sitesini gösterecektir. Çalışırsa, testlerimizi bununla ekleyebiliriz: Docker-Compose -f Docker-Compose.yml run-rm wordpress_phppphit /app/bin/install-wp-tests.sh wordpress_test root ” mysql_phpunit the en son true ‘Bin/ yükleme-wp-tests.sh. Gutenberg’den ödünç alınan kodu daha önce kullandığım standarttan benimkini değiştirdim. Bununla, testi şu komutla çalıştırabilirim: Docker-Compose run-rm wordpress_phpunit phunit tüm bunları asla hatırlayamıyorum. Bu yüzden besteci komut dosyalarını gerçekten seviyorum. Bu serinin önceki makalesinde, süreçteki diğer adımlar için bir besteci komut dosyası yaptım. Tüm kurulum adımlarını özetlemek yerine, Gutenberg’den bir liman işçilerinin kurulum senaryosunu ödünç aldım. Şimdi yeni bir besteci komut dosyası ekleyelim. Her komut dosyası işlem adımlarını özetlemelidir. Tüm bunlar WordPress ile ilgilidir, bu yüzden “WP-” ile başlayalım. Birincisi “WP-install”. Bu, WordPress’i düzenleyen Bin/Install-docKER.sh’da depolanan yeni bir kurulum komut dosyası çağırır, besteci eklenti bağımlılıklarını yeniler ve WordPress birimi test takımını yükler. Testi çalıştırmadan önce yapmamız gereken tek şey bu: #!/Bin/Bash #WordPress sürümünü ayarlayın
Wp_version = $ {1-newest}
# Çıkış başarısız olan bir arıza varsa
Set -e
# Yararlı bir işlev ekleyin
. “$ (Dirname” $ ​​0 “) /includes.sh”
# Docker’ın yüklü olup olmadığını kontrol edin
eğer ! command_exists “liman işçileri”; thencho -e $ (error_message “Docker yüklü görünmüyor. Lütfen indirmek için Docker sitesini ziyaret edin: $ (Action_Format” https://www.docker.com/community-ition#/download “)”) “)))
dışarı 1
Fi
# Docker’ın çalışıp çalışmadığını kontrol edin
eğer ! Bilgi İşçi İşçiliği>/Dev/Null 2> 1; sonra
echo -e $ (error_message “Docker çalışmıyor. Lütfen Docker uygulamanızı başlatıp başlatmadığınızı kontrol edin ve sistem tepsinizde görün.”)
dışarı 1
Fi
# Mevcut kapları durdurun
echo -e $ (status_message “Docker kabını durdurun …”)
Docker-Compose Down-Remove-Egans>/Dev/Null 2> & 1
# Resim güncellemesini indir
echo -e $ (status_message “Docker görüntüsünün güncellemesini indir …”)
liman işçilerinin kompozisyonunu çekin -paralel
# Bir kap başlatın
echo -e $ (status_message “Bir Docker kapsayıcısı başlatma …”)
Docker -Compose Up -d>/dev/null
Host_port = $ (Yazma İşçileri Portu WordPress 80 | AWK -F: ‘{printf $ 2}’)
# Liman işçileri doğru düzenlenene kadar bekleyin
echo -en $ (status_message “WordPress’e bağlanmaya çalışıyor …”)
$ ‘a kadar (curl -l http: // localhost: $ host_port -so -2> & 1 | grep -q “wordpress”); Yapmak
Gema -n ‘.’
Uyku 5
tamamlamak
Eko ”
# WordPress’i yükle
Echo -e $ (status_message “wordpress yükleme …”)
Docker -Compose Run -rm –u 33 CLI Core yükleyici -Url = LocalHost: $ host_port -title = testSite –Admin_user = admin –Admin_password = şifre [e -posta korumalı]>/dev/null
# WordPress görüntüsünün en son olmadığı durumunda WordPress güncellemesini kontrol edin.
Docker -Compose Run -rm –U 33 CLI Çekirdek Güncellemesi>/Dev/NULL# ‘WordPress’ hacmi daha erken/yukarı değilse, ancak bağlantı noktası direği değişti, bunu desteklemeliyiz.
Current_url = $ (Docker -Compose Run -t -rm seçeneği CLI Siteurl’ı Get Edin)
if [“$ current_url”! = “http: // localhost: $ host_port”]; sonra
Docker-Compose Run-RM CLI seçeneği Evi “http: // localhost: $ host_port”>/dev/null
Docker-Compose Run-RM CLI seçeneği Sitesi güncelleme “http: // localhost: $ host_port”>/dev/null
Fi
echo -e $ (status_message “sunucusu çalışır:”)
echo -e $ (status_message “http: // localhost: $ host_port”)
# Besteciyi yükle
echo -e $ (status_message “besteci modülleri yükleme ve güncelleme …”)
Docker-Compose Run-RM besteci yüklemesi
# Phunit testi iskelesini yükleyin
echo -e $ (status_message “bir phunit testi iskele yükleme …”)
Docker-Compose run-rm wordpress_phpphit /app/bin/install-wp-tests.sh örnek root wordpress_test mysql “$ {wp_version}” false>/dev/null
echo -e $ (status_message “tam kurulum testi”)
Sonra sunucuyu başlatmak için birine ihtiyacımız var. WP-Start’ımızın bunun için bir bash betiğine ihtiyacı yok. Sadece: Docker-Compose Up -D o zaman testi çalıştırmak için birine ihtiyacımız var, bu daha önce gösterdiğimle aynı komuta ihtiyacımız var, sadece WP-Tests run-rm wordpress_phit phappunit adlı bir besteci komut dosyasına sardık , Composer.json komut dosyası şöyle görünüyor: {{
“Testler”: “Besteci Geliştirildi && Besteci Sneaks && besteci birimler && besteci wp-testleri”,
“Birim testleri”: “Phunit-TestSuite = Unit”, “WP-Install”: “Bash ./bin/install-docker.sh”,
“Wp-start”: “Docker-compose -d”,
“WP-Tests”: “Port kompozisyonunu çalıştırın-RM wordpress_phit phurapit-entegrasyon.xml.dist”, konfigürasyonu “,
“Phunit-v”: “phunit-versiyonu”,
“Sniffs”: “PHPCS SRC/ && PHPCS Testi/”,
“İyileştirme”: “PHPCBF SRC/ && Phpcbf Testi/”,
“Lints”: “Paralel-açık ./src-blame — satıcıyı hariç tut && paralel-ini.
} WordCamp EU 2018 atölyesi Birim testi hakkında daha fazla bilgi edinmek istiyorsanız, bu yıl Wordcamp Europe’da Thorsten, Carl Alexander ve Giuseppe Mazzapica’nın atölyesine bakın. Üçü de WordPress Apex’in geliştiricisidir ve bu atölyeyi herkese tavsiye ederim. Eminim umarım yapabilirim ya da video WordPress.tv’ye ulaşır, hangisi olmalıdır. Bu atölye hakkında daha fazla ayrıntı var. Bu serideki bir sonraki yazıda ilerlerken, yazma entegrasyon testini PHP WordPress test paketi testi ile tartışacağım. Hangi entegrasyonun test edileceğini, ayrı birim testini, yapay kullanarak ve bu testi yazarken yapabileceğimiz ve yapamayacağımız WordPress ve veritabanları hakkında hangi varsayımları tartışacağım.

admin

Bir Cevap Yazın

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