Installieren und laden Sie zusätzliche Plugins, wenn Sie Komponententests ausführen

Ich möchte Komponententests für ein Plugin schreiben. Ich habe WP-CLI verwendet, um die Test-WordPress-Instanz zu scaften und kann Tests erfolgreich ausführen.

Das Plugin, für das ich Unit-Tests schreibe, ist ein Site-spezifisches Plugin und kein eigenständiges Plugin, das für das WordPress.org-Repository bestimmt ist. Da es sich um ein Site-spezifisches Plugin handelt, verwenden einige functionen functionen, die von anderen Plugins bereitgestellt werden, z. B. Erweiterte benutzerdefinierte Felder.

Frage : Wie installiere und lade ich zusätzliche Plugins auf der gerüsteten WP-CLI-Site, wenn ich mein sitespezifisches Plugin teste?

Ich schaute auf die Datei bin/install-wp-test.sh Hoffnung, ich könnte zusätzliche wp-CLI-Befehle hinzufügen, um die erforderlichen Plugins zu installieren und zu aktivieren, aber dieses Skript scheint nicht wp-cli zu verwenden, um die Test-WordPress-Instanz zu erstellen.

Ich habe auch versucht, die _manually_load_plugin functionen in der Datei tests/bootstrap.php mit dem folgenden Code zu aktualisieren, aber es hatte keine Auswirkungen.

 /** * PHPUnit bootstrap file * * @package Site Specific Plugin */ $_tests_dir = getenv( 'WP_TESTS_DIR' ); if ( ! $_tests_dir ) { $_tests_dir = '/tmp/wordpress-tests-lib'; } // Give access to tests_add_filter() function. require_once $_tests_dir . '/includes/functions.php'; /** * Manually load the plugin being tested. */ function _manually_load_plugin() { require dirname( dirname( __FILE__ ) ) . '/battingforchange.php'; // Update array with plugins to include ... $plugins_to_active = array( 'advanced-custom-fields-pro/acf.php' ); update_option( 'active_plugins', $plugins_to_active ); } tests_add_filter( 'muplugins_loaded', '_manually_load_plugin' ); // Start up the WP testing environment. require $_tests_dir . '/includes/bootstrap.php'; 

Solutions Collecting From Web of "Installieren und laden Sie zusätzliche Plugins, wenn Sie Komponententests ausführen"

Was Sie versuchen, ist nicht Komponententests, sondern Integrationstests, und da die Integration normalerweise eine Initialisierung erfordert, die für das jeweilige Plugin spezifisch ist, ist es schwierig, eine allgemeine Antwort zu geben, die mehr ist als die offensichtliche “include the plugin file”

Die Idee des Komponententests besteht darin, zu überprüfen, ob Ihre APIs das ausführen, was sie tun sollen, und die Basisannahme sollte sein, dass externe APIs korrekt funktionieren, ansonsten gibt es keine Begrenzung für die Anzahl der zu schreibenden Tests.

Sobald Sie davon ausgehen, dass die externen APIs korrekt funktionieren, macht es keinen Unterschied, ob Sie sie tatsächlich aufrufen oder nur eine function unter dem gleichen Namen schreiben, die nur ihr Verhalten nachahmt.

Als ein Beispiel für die Idee. In einem Plugin, das ich schreibe, gibt es mehrere Einstellungen, die steuern, mit welchem ​​Argument WP_Query aufgerufen wird. Um das zu testen, überprüfe ich einfach das resultierende Argumentarray, ohne den Aufruf von WP_Query .

Die Testumgebung, die von WP-CLI generiert wird, wurde entwickelt, um ein einzelnes Plugin zu testen, nicht für Integrationstests, wie von Mark Kaplun aufgezeigt .

Wenn Sie jedoch diesem Beitrag auf Unit Testing Themes und Plugins in WordPress folgen, können Sie Themen und zusätzliche Plugins laden, um weitere Integrationstests durchzuführen.