Welche Bereiche testen Sie beim Erstellen eines Plugins?

Ich bin ein Plugin-Entwickler mit keinerlei Branchenerfahrung. Ich habe ein einfaches Plugin erstellt, um mehrere Beiträge zu einem Beitrag über Metabox hinzuzufügen.

Ich habe viele Websites durchsucht und ich habe wp-cli und PHPUnit zur Durchführung von wp-cli kennengelernt, aber ich habe keine Ahnung, was ich testen soll, welche functionen / Hooks zum Testen ein- oder ausgeschlossen werden, welche Vorkehrungen ich treffen muss und wie um Dummy-Benutzerdaten zum Test zu führen.

Kann mich hier irgendjemand durch den process führen?

Solutions Collecting From Web of "Welche Bereiche testen Sie beim Erstellen eines Plugins?"

Arten von Tests

Beachten Sie zunächst, dass “Komponententests” in WordPress im Allgemeinen über das Testen von Einheiten hinausgehen und eher funktionalen / Integrationstests entsprechen. Dies ist eher ein technischer Unterschied, aber wenn Sie den Unterschied zwischen diesen verschiedenen Dingen verstehen, können Sie manchmal verwirrt sein, wie WordPress “Einheit” Dinge testet.

Wenn Sie fragen, welche Teile des Plugins Sie testen sollten, sollten Sie idealerweise alles testen. Aber welche Teile Sie testen sollten (und welche Integrationsteile) und für welche Teile Sie Akzeptanztests verwenden sollten, ist eine andere Sache.

Derzeit verwende ich für meine Plugins zwei verschiedene Testschichten: “Unit” -Tests mit PHPUnit und Akzeptanztests im Browser über den WP-Browser . Das Gerät testet die interne Logik, während die Akzeptanztests überprüfen, ob ein Benutzer die Benutzeroberfläche des Plugins verwendet.

Prüfung

Die Dinge zum Komponententest sind:

  • Code, der Werte in der database ändert
  • Code, der Berechnungen durchführt
  • Code, der andere Logik enthält

Grundsätzlich jede function, an die Sie einen Wert übergeben, und sie macht so etwas damit und / oder gibt Ihnen einen Wert zurück.

Um diese Art von Code zu testen, schreiben Sie einen Test, der die fragliche function aufruft, bestimmte Werte übergibt und dann bestätigt, dass das zurückgegebene Ergebnis dem entspricht, was Sie erwarten. Oder für functionen, die die database ändern, würden Sie behaupten, dass die database die Werte enthält, die erwartet werden, nachdem die function aufgerufen wurde.

Nicht testen

Code, der schwierig zu testen ist, und einige würden vielleicht nicht Unit-getestet werden, wäre Code, der im Grunde nur für die Ausgabe von Zeug in den Browser gewidmet ist. Dort würden Akzeptanztests eingehen.

Da Sie Aktionen / Filter erwähnen, klingt es vielleicht so, als würden Sie sich fragen, ob Sie testen sollten, ob eine function an die richtige Aktion angehängt ist oder ob eine function, die Sie an einen Filter angehängt haben, tatsächlich angewendet wird, wenn WordPress diesen Filter aufruft. Je nach Aktion oder Filter kann dies erforderlich sein oder auch nicht. Im Allgemeinen teste ich solche Dinge nicht, da sie normalerweise besser für functions- / Akzeptanztests geeignet sind (obwohl Akzeptanztests sie nur indirekt testen).

Zusammenfassung

Im Grunde genommen testen Unit Logic und database-Methoden die tatsächliche Benutzeroberfläche Ihres Plugins. Damit dies gut funktioniert, müssen Sie Ihren Template / Output-Code natürlich getrennt von Ihrer anderen Logik halten, was in der Regel eine gute Idee ist.

In Ihrem Fall stellen Sie vielleicht fest, dass Akzeptanztests für Ihr Plugin wirklich nützlicher sind, und Komponententests wären nicht wirklich erforderlich, da die meisten Tests bereits durch die Akzeptanztests getestet würden. In der Regel wäre jedoch beides ideal.

Ich würde sagen, dass im Fall von WordPress nicht nur Komponententests in Betracht gezogen werden müssen: functions- / Integrations- / Abnahmetests (Sie wählen die Typen, die in Ihrer Situation relevanter sind), sind ebenfalls wichtig weil es ein Ökosystem ist und es wichtig ist zu überprüfen, dass dein Code mit den anderen Komponenten zusammenarbeitet (und als Bonus sogar mit einigen der wichtigsten Plugins wie WooCommerce, Yoast SEO, etc.).

Für alle oben genannten Punkte (einschließlich Unit-Tests, aber nicht obligatorisch) fand ich persönlich heraus, dass Codeception ein einfaches Tool ist, mit dem man anfangen kann. Luca macht wichtige WordPress-Arbeiten in diesem Bereich mit seinen wp-Browser- Erweiterungen für die Codeception, unter anderem. Er hat auch einen ausgezeichneten Blog , der viel davon erklärt.