Yanıtlar:
Bildiğim kadarıyla, şu anda bunun için hiçbir belge yok. Resmi kaynak burada .
Ayrıca, bu özellik hakkında biraz ayrıntılı bilgi veren WordPress eklentilerini test eden bir eğitim yazdım .
Kullanmanın avantajlarından biri
WP_UnitTestCasefabrikalarıdır. Bunlarafactoryüye değişkeni üzerinden erişilebilir . Bufactory, her biri include / factory.php içinde tanımlanan sınıflardan birinin bir örneği olan özelliklere sahip bir nesnedir . Ne yaparlar? Testinizde ihtiyaç duyduğunuz her yerde kullanıcılar, yazılar, şartlar vb. Oluşturmayı çok kolaylaştırır. Yani, bunu yapmak yerine:$args = array( /* A bunch of user data you had to make up */ ); wp_insert_user( $args );Bunu sadece yapabilirsiniz:
$user_id = $this->factory->user->create();Ama bekleyin, daha da iyi olur. Pek çok kullanıcıya (veya gönderilere veya her neyse) ihtiyacınız olursa? Bunları yalnızca toplu olarak oluşturabilirsiniz:
$user_ids = $this->factory->user->create_many( 25 );Bu, testinizde kullanabileceğiniz 25 kullanıcı yaratacaktır.
factoryKendinizin kullanabileceği aşağıdaki özelliklere sahiptir:
$post$attachment$comment$user$term$category$tag$blogHepsi, yukarıdaki örnekte gösterildiği gibi
$userfabrika ile aynı şekilde kullanılabilir . Örneğin, şöyle bir yazı oluşturabilirsiniz:
$this->factory->post->create();Nesneyi oluşturmak için kullanılacak belirli argümanlar da belirleyebilirsiniz. Yukarıdaki örnekte bir yayın oluşturduk, ancak belirli bir kullanıcıya atanmadı (
post_authoralan varsayılan olarak0). Bazen gönderinin bir kullanıcıya atanmasını isteyebiliriz. Bunu böyle yapardık:$user_id = $this->factory->user->create(); $post_id = $this->factory->post->create( array( 'post_author' => $user_id ) );Ayrıca, oluşturduğunuz nesnenin kimliğinden daha fazlasına ihtiyacınız varsa, bunu yapmanız gerekmez:
$post_id = $this->factory->post->create(); $post = get_post( $post_id );Bunun yerine,
create_and_get()yöntemi kullanın :// $post will be an instance of WP_Post $post = $this->factory->post->create_and_get();Bu örnekte,
postfabrikayı kullandık , ancak aynı şey tüm fabrikalar için de geçerli.
Sanırım bunu WordPress docs ekibine söyleyeceğim. Belki bu şeyleri eklenti ve tema el kitaplarına yerleştirebiliriz.
Güncelleme (20 Haziran 2015): Kendi özel fabrikalarını da oluşturabilirsin !
Güncelleme (27 Eylül 2016): WordPress 4.4'te testlerfactory() fabrikalara erişim için statik bir yöntem sağlamak üzere güncellendi , ancak factoryözellik hala bir büyü alıcı tarafından sağlanıyor.
Kaynak kodu
https://github.com/rnagle/wordpress-unit-tests/blob/master/includes/factory.php
Şu an bakmak için en iyi yer gibi görünüyor