41. Unit-Tests mit Field Forge | Field Forge - Benutzerdefinierte Felder, gebaut für Geschwindigkeit
Herunterladen Anmelden

41. Unit-Tests mit Field Forge

Strategien zum Schreiben von PHPUnit-Tests, die mit Field Forge-Feldern interagieren.

Testdaten einrichten

php
class ProductFieldsTest extends WP_UnitTestCase {

    private $post_id;

    public function setUp(): void {
        parent::setUp();

        // Create a test post
        $this->post_id = $this->factory->post->create( [
            'post_type'   => 'product',
            'post_title'  => 'Test Product',
            'post_status' => 'publish',
        ] );

        // Set field values
        update_field( 'price', '29.99', $this->post_id );
        update_field( 'sku', 'TEST-001', $this->post_id );
        update_field( 'is_featured', true, $this->post_id );
    }

    public function test_get_field_returns_price() {
        $price = get_field( 'price', $this->post_id );
        $this->assertEquals( '29.99', $price );
    }

    public function test_get_field_returns_boolean() {
        $featured = get_field( 'is_featured', $this->post_id );
        $this->assertTrue( $featured );
    }

    public function test_get_fields_returns_all() {
        $fields = get_fields( $this->post_id );
        $this->assertArrayHasKey( 'price', $fields );
        $this->assertArrayHasKey( 'sku', $fields );
    }

    public function test_delete_field_removes_value() {
        delete_field( 'sku', $this->post_id );
        $sku = get_field( 'sku', $this->post_id );
        $this->assertNull( $sku );
    }

    public function test_update_field_changes_value() {
        update_field( 'price', '39.99', $this->post_id );
        $price = get_field( 'price', $this->post_id );
        $this->assertEquals( '39.99', $price );
    }

    public function tearDown(): void {
        FIELDFORGE_Field_Values::instance()->delete_all( $this->post_id );
        wp_delete_post( $this->post_id, true );
        parent::tearDown();
    }
}

Testen von Wiederholungsfeldern

php
public function test_repeater_field() {
    $members = [
        [ 'name' => 'Alice', 'role' => 'Developer' ],
        [ 'name' => 'Bob', 'role' => 'Designer' ],
    ];

    $field_def = FIELDFORGE_Field_Groups::instance()->find_field( 'team_members', $this->post_id );
    FIELDFORGE_Field_Values::instance()->save_compound_field(
        'team_members', $members, $this->post_id, $field_def
    );

    $result = get_field( 'team_members', $this->post_id );
    $this->assertCount( 2, $result );
    $this->assertEquals( 'Alice', $result[0]['name'] );
    $this->assertEquals( 'Designer', $result[1]['role'] );
}

Forge KI-Assistent Online

Hallo! Ich bin der Field Forge KI-Assistent. Fragen Sie mich alles über das Plugin — Einrichtung, Funktionen, Fehlerbehebung oder Entwicklung.

Gerade eben
Unterstützt von Forge KI · Dokumentation durchsuchen