最近のバージョンではWP_UnitTestCase
は$factory
プロパティを含んでいました。
例えば:
$post = $this->factory->post->create();
この便利な機能に関するドキュメントはどこにありますか?
私の知る限り、現時点ではドキュメントはありません。 公式ソースはこちら 。
また、WordPressプラグインの単体テストに関するチュートリアルも作成しました。 この機能の詳細を説明しています 。
WP_UnitTestCase
を使用する利点の1つは、その工場です。これらには、factory
メンバー変数を介してアクセスできます。factory
は、それぞれが includes/factory.php で定義されているクラスの1つのインスタンスであるプロパティを持つオブジェクトです。彼らは何をしますか?テストで必要な場所にユーザー、投稿、用語などを簡単に作成できます。したがって、これを行う代わりに:$args = array( /* A bunch of user data you had to make up */ ); wp_insert_user( $args );
あなたはこれを行うことができます:
$user_id = $this->factory->user->create();
しかし、待ってください、さらに良くなります。 多くのユーザー(または投稿など)が必要な場合はどうなりますか?次のように一括で作成できます。
$user_ids = $this->factory->user->create_many( 25 );
これにより、テストで使用できる25人のユーザーが作成されます。
factory
には、使用できる次のプロパティがあります。
$post
$attachment
$comment
$user
$term
$category
$tag
$blog
これらはすべて、上記の例で
$user
ファクトリーで示したのと同じ方法で使用できます。たとえば、次のような投稿を作成できます。
$this->factory->post->create();
オブジェクトの作成に使用する特定の引数を指定することもできます。上記の例では、投稿を作成しましたが、特定のユーザーに割り当てられていません(
post_author
フィールドはデフォルトで0
になります)。代わりに、投稿をユーザーに割り当てたい場合があります。このようにします:$user_id = $this->factory->user->create(); $post_id = $this->factory->post->create( array( 'post_author' => $user_id ) );
また、作成しているオブジェクトのID以外のものが必要な場合は、これを行う必要はありません。
$post_id = $this->factory->post->create(); $post = get_post( $post_id );
代わりに、
create_and_get()
メソッドを使用します。// $post will be an instance of WP_Post $post = $this->factory->post->create_and_get();
この例では、
post
ファクトリーを使用しましたが、すべての工場で同じことが当てはまります。
これについては、WordPress docsチームに言及すると思います。このようなものをプラグインとテーマのハンドブックに入れることができるかもしれません。
更新(2015年6月20日):または 独自のカスタムファクトリを作成 !
更新(2016年9月27日):WordPress 4.4では テストは静的なfactory()
メソッドを提供するために更新されました ファクトリへのアクセス用。ただし、factory
プロパティはマジックゲッターを介して提供されます。
のソースコード
https://github.com/rnagle/wordpress-unit-tests/blob/master/includes/factory.php
現時点で見るのに最適な場所のようです