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_UnitTestCase
fabrikaları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.
factory
Kendinizin kullanabileceği aşağıdaki özelliklere sahiptir:
$post
$attachment
$comment
$user
$term
$category
$tag
$blog
Hepsi, yukarıdaki örnekte gösterildiği gibi
$user
fabrika 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_author
alan 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,
post
fabrikayı 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