web-dev-qa-db-ja.com

WP_UnitTestCaseファクトリクラスのドキュメントはどこにありますか?

最近のバージョンではWP_UnitTestCase$factoryプロパティを含んでいました。

例えば:

$post = $this->factory->post->create();

この便利な機能に関するドキュメントはどこにありますか?

21
djb

私の知る限り、現時点ではドキュメントはありません。 公式ソースはこちら

また、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プロパティはマジックゲッターを介して提供されます。

26
J.D.

のソースコード

https://github.com/rnagle/wordpress-unit-tests/blob/master/includes/factory.php

現時点で見るのに最適な場所のようです

2
djb