Unit-Tests sollten nicht von einem laufenden Cluster abhängen, sondern stattdessen simuliert werden. Genauer gesagt sollten die Kundenantworten nachgeahmt werden. Mit den Dienstprogrammen zum Testen der elastischen Suche können Sie ganz einfach Elasticsearch-Antworten simulieren.
Sie können Composer verwenden
composer require --dev imdhemy/es-testing-utils
Elasticsearch | Es testet Utils |
---|---|
7.x | 7.x |
8.x | 8.x |
Es Testing Utils bietet Ihnen einen fließenden Elasticsearch-Mock-Builder, den Sie wie folgt verwenden können:
use ImdhemyEsUtilsEsMocker;// ES-Client erstellen, der die Scheinantwort zurückgibt$client = EsMocker::mock(['tagline' => 'Sie wissen schon, für die Suche.'])->build();
Oder Sie können eine Folge von Antworten simulieren:
use ImdhemyEsUtilsEsMocker;// Der erstellte Client gibt die Antwort „$info“ mit der ersten Anfrage zurück,// und die Antwort „$search“ mit der zweiten Anfrage usw.// Hinweis: die Methode „thenFail()“. verspottet eine Anforderungsausnahme.$client = EsMocker::mock($info)->then($index)->then($search)->thenFail($error)->build();// Oder Sie können die erste Anfrage direkt fehlschlagen:$client = EsMocker ::fail($message)->build();
Nachfolgend finden Sie ein vollständiges Beispiel für die Verwendung von EsMocker in einem Test:
use ImdhemyEsUtilsEsMocker;$expected=['tagline' => 'Sie wissen schon, für die Suche.'];$client = EsMocker::mock($expected)->build();$response = $client->info(); $body = (string) $response->getBody();$this->assertEquals(json_encode($expected), $body);
Die faker-Klasse bietet Ihnen eine Reihe von Methoden zum Generieren von Zufallsdaten für Ihre Tests. Es bietet alle Methoden der Faker-Bibliothek sowie neue Methoden zum Generieren von Elasticsearch-Daten. Alle mit Elasticsearch verbundenen Methoden beginnen mit dem Präfix es
.
use ImdhemyEsUtilsFaker;$faker = Faker::create();$index = $faker->esIndexName(); // Gibt einen zufälligen Indexnamen zurück$createIndex = $faker->esCreateIndex(); // Gibt den Antworttext zum Erstellen eines Index zurück// Erkunden Sie die Faker-Klasse, um alle verfügbaren Methoden anzuzeigen
Mohamad Eldhemy
Alle Mitwirkenden
Bei den ES-Testdienstprogrammen handelt es sich um Open-Source-Software, die unter der MIT-Lizenz lizenziert ist