web-dev-qa-db-ja.com

プラグインを構築する際にユニットテストするべき分野は何ですか?

私は業界での経験がまったくないプラグイン開発者です。私はメタボックスを通して投稿に複数の貢献者を追加するための簡単なプラグインを作成しました。

何トンものウェブサイトを検索し、単体テストを実行するためにwp-cliPHPUnitが必要であることを知りましたが、何をテストするか、テストに含めるまたは除外する関数/フック、取るべき予防措置、およびフィード方法はわかりませんテストにダミーのユーザーデータ。

ここに誰かが私をその過程を通して導くことができますか?

4

テストの種類

まず、WordPressの「単体テスト」は一般的に単体テストを超えたものであり、機能/統合テストによく似ています。これは技術的な違いですが、これらの異なる点の違いを理解していると、WordPressの「ユニット」がどのように物事をテストするのか混乱することがあります。

あなたがプラグインのどの部分をテストするべきかを尋ねるとき、理想的にはあなたはそれの全てをテストするべきです。しかし、どの部分を統合(または統合)テストする必要があるか、そしてどの部分に合格テストを使用する必要があるかについては、別の問題です。

現在、私のプラグインでは、2つの異なるテスト層を使用しています。PHPUnitを使った「ユニット」テストと、受け入れテストは WPブラウザ を介してブラウザで実行されます。ユニットテストは内部ロジックをテストしますが、受け入れテストはユーザーがプラグインのUIを使用したときに実際に動作することを確認します。

テスト

unit testの内容は次のとおりです。

  • データベース内の値を変更するコード
  • 計算を実行するコード
  • 他のロジックを含むコード

基本的に、あなたが値を渡し、それを使ってこのようなことをしたり、あるいは何らかの値をあなたに返したりするどんな関数でも。

この種のコードをテストするには、問題の関数を呼び出して特定の値を渡してテストを作成し、返された結果が期待どおりであることを表明します。あるいは、データベースを変更する関数の場合は、関数が呼び出された後にデータベースに予期される値が含まれていると主張します。

テストしない

単体テストするのが困難で、おそらく単体テストされるべきであると主張する すべきではない と考える人もいるでしょうが、基本的にはブラウザに出力することだけを目的としたコードです。そこで受け入れテストが行​​われます。

また、アクション/フィルタについて言及しているので、ある関数が正しいアクションにフックされているかどうか、またはWordPressがそのフィルタを呼び出すときに実際にフィルタにフックされている関数が適用されるかどうかをテストする必要があります。問題のアクションやフィルタによっては、これが必要な場合とそうでない場合があります。一般的に、私はこの種のことはテストしません。通常は機能テスト/受け入れテストに適しているからです(受け入れテストは間接的にしかテストされません)。

概要

だから基本的に、ユニットテストロジックとデータベースメソッド、受け入れテストあなたのプラグインの実際のUI。これをうまく機能させるには、もちろん、テンプレート/出力コードを他のロジックとはほとんど別にしておく必要があります。いずれにしてもこれは一般的には良い考えです。

あなたのケースでは、受け入れテストはあなたのプラグインにとって本当に便利であり、ほとんどすべてのものは受け入れテストによって既にテストされているので、単体テストは本当に必要ではないでしょう。ただし、両方を持つことが一般的に理想的です。

4
J.D.

WordPressの場合、単体テストだけが検討する価値があるわけではありません。機能テスト/統合テスト/受け入れテスト(状況に応じて適切なタイプを選択すること)も重要です。それはエコシステムであり、あなたのコードが他のコンポーネントと(そして、おまけとして、WooCommerce、Yoast SEOなどのようないくつかの主要なプラグインでさえも)動作することを検証することが重要だからです。

上記のすべて(単体テストを含むが必須ではありません)について、私は個人的にCodeceptionが始めるのが簡単なツールであることを知りました。 Lucaは、特にCodeception用の wp-browser 拡張機能を使用して、この分野で重要なWordPress関連の作業を行っています。彼はまたそれをたくさん説明している すばらしいブログ を持っています。

0
montrealist