Meine eigenen classn bei Wp Unit Tests verwenden

(Ich versuche, Stilprobleme von Codebeispielen zu lösen)

Ich entwickle ein Thema, aber ich habe einige classn, die für dieses Thema entwickelt wurden. Ich möchte Komponententests zu meinem Thema durchführen.

Ich bin diesen Schritten gefolgt:

  1. Ausgechecktes Test-Repo zu meinem Root-Web-Ordner:

    svn co http://develop.svn.wordpress.org/trunk/ wordpress-develop 
  2. Kopierte meinen Themenordner in WordPress-Entwicklung / src / wp-content / themes

  3. Eine leere database erstellt und die Datei wp-tests-config.php eingerichtet . Diese Zeile wurde auch zu wp-tests-config.php hinzugefügt

     define( 'WP_DEFAULT_THEME', 'THEMENAME' ); 
  4. Erstellt eine wordpress-develop / tests / phpunit / tests / konser.php Datei mit folgendem Inhalt:

     factory->post->create(array( 'post_type' => 'konser', )); add_post_meta($id, "konser_tarih", time()); $ids = get_posts(array( 'post_type' => 'konser', ) ); foreach ($ids as $id) { $this->assertInstanceOf('WP_Post',$id); $ss = get_post_meta($id->ID, "konser_tarih", true); $this->assertTrue($ss!=''); } } } 

    Bildbeschreibung hier eingeben

  5. Aber ich möchte meine Konser und PostType classn verwenden.

     function setUp() { $this->post_id = new Konser(410); parent::setUp(); } function test_ID() { $this->assertInternalType("int", $this->post_id); } 
  6. Diese 2 Zeilen zu /wordpress-develop/tests/phpunit/includes/functions.php hinzugefügt

      require_once('src/wp-content/themes/THEMENAME/include/PostType.php'); require_once('src/wp-content/themes/THEMENAME/include/Konser.php'); 
  7. Aber ich bekomme Aufruf zu undefinierter function get_post () in konsertv-develop / src / wp-content / themes / THEMENAME / include / PostType.php

Kannst du mir sagen, was ich vermisse?

Inhalt von PostType.php

  post = get_post($ID); $this->ID = $ID; } function getPost() { return $this->post; } function getTarih() { return get_post_meta($this->ID, "konser_tarih", true); } function getID() { return $this->ID; } 

}

Solutions Collecting From Web of "Meine eigenen classn bei Wp Unit Tests verwenden"

6. Diese 2 Zeilen zu /wordpress-develop/tests/phpunit/includes/functions.php

require_once('src/wp-content/themes/THEMENAME/include/PostType.php'); require_once('src/wp-content/themes/THEMENAME/include/Konser.php');

Das ist das Problem. Die function get_post() existiert nicht, da die Datei phpunit/includes/functions.php enthalten ist, bevor WordPress geladen wird. Das ist tatsächlich ein Teil des Grundes, dass es als eine separate Datei existiert: Es kann also in Ihrem eigenen phpunit Bootstrap enthalten sein (wenn Sie einen benötigen und diese functionen verwenden müssen). Für ein Beispiel, wie dies für Plugins gemacht wird, können Sie ein Tutorial sehen, das ich geschrieben habe .

In Ihrem Fall testen Sie jedoch ein Thema und Ihre Testsuite ist nicht komplex genug, um einen eigenen Bootstrap zu gewährleisten. Eigentlich, deinen dritten Schritt, Hinzufügen define( 'WP_DEFAULT_THEME', 'THEMENAME' ); zu der wp-tests-config.php sollte ausreichen. Die zwei Dateien, die Sie require werden automatisch als Teil Ihres Themas geladen. (Ja, das Thema wird während der Komponententests geladen.)

Also war dein Fehler Schritt 6. Es ist nicht notwendig.