W najnowszych wersjach WP_UnitTestCase
ma $factory
właściwość.
Na przykład:
$post = $this->factory->post->create();
Gdzie mogę znaleźć dokumentację dotyczącą tej przydatnej funkcji?
źródło
W najnowszych wersjach WP_UnitTestCase
ma $factory
właściwość.
Na przykład:
$post = $this->factory->post->create();
Gdzie mogę znaleźć dokumentację dotyczącą tej przydatnej funkcji?
O ile mi wiadomo, obecnie nie ma na to dokumentacji. Oficjalnym źródłem jest tutaj .
Napisałem również samouczek na temat testowania jednostkowego wtyczek WordPress, który zawiera szczegółowe informacje na temat tej funkcji .
Jedną z zalet korzystania z niego
WP_UnitTestCase
są jego fabryki. Można do nich uzyskać dostęp poprzezfactory
zmienną członka.factory
Przedmiotem o właściwościach, które każdorazowo oznaczają przypadek jednej z klas określonej w obejmuje / factory.php . Co oni robią, pytasz? Ułatwiają tworzenie użytkowników, postów, warunków itp., Gdziekolwiek ich potrzebujesz w teście. Zamiast tego:$args = array( /* A bunch of user data you had to make up */ ); wp_insert_user( $args );
Możesz po prostu to zrobić:
$user_id = $this->factory->user->create();
Ale czekaj, robi się jeszcze lepiej. Co zrobić, jeśli potrzebujesz wielu użytkowników (lub postów itp.)? Możesz po prostu utworzyć je zbiorczo w następujący sposób:
$user_ids = $this->factory->user->create_many( 25 );
Spowoduje to utworzenie 25 użytkowników, których możesz użyć w teście.
factory
Ma następujące właściwości, które można użyć:
$post
$attachment
$comment
$user
$term
$category
$tag
$blog
Wszystkie mogą być używane w taki sam sposób, jak pokazano w powyższym przykładzie z
$user
fabryką. Na przykład możesz utworzyć taki post:
$this->factory->post->create();
Możesz także określić konkretne argumenty, które będą używane do tworzenia obiektu. W powyższym przykładzie utworzyliśmy post, ale nie został on przypisany do konkretnego użytkownika (
post_author
pole będzie domyślnie ustawione na0
). Czasami zamiast tego możemy chcieć przypisać post do użytkownika. Zrobilibyśmy to w ten sposób:$user_id = $this->factory->user->create(); $post_id = $this->factory->post->create( array( 'post_author' => $user_id ) );
Ponadto, jeśli potrzebujesz czegoś więcej niż tylko identyfikator tworzonego obiektu, nie musisz tego robić:
$post_id = $this->factory->post->create(); $post = get_post( $post_id );
Zamiast tego użyj
create_and_get()
metody:// $post will be an instance of WP_Post $post = $this->factory->post->create_and_get();
W tym przykładzie wykorzystaliśmy
post
fabrykę, ale to samo dotyczy wszystkich fabryk.
Myślę, że wspomnę o tym zespołowi dokumentów WordPress. Może uda nam się wprowadzić te rzeczy do wtyczek i podręczników tematycznych.
Aktualizacja (20 czerwca 2015 r.): Możesz także tworzyć własne niestandardowe fabryki !
Aktualizacja (27 września 2016 r.): W WordPress 4.4 testy zostały zaktualizowane, aby zapewnić statyczną factory()
metodę dostępu do fabryk, chociaż factory
właściwość jest nadal udostępniana za pośrednictwem magicznego narzędzia pobierającego.
Kod źródłowy w
https://github.com/rnagle/wordpress-unit-tests/blob/master/includes/factory.php
wydaje się być najlepszym miejscem do obejrzenia w tej chwili
źródło