Модульные тесты не должны зависеть от работающего кластера, а вместо этого должны быть макетированы. Чтобы быть более конкретным, ответы клиента должны быть смоделированы. Утилиты тестирования Elastic Search позволяют легко имитировать ответы Elasticsearch.
Вы можете использовать композитор
composer require --dev imdhemy/es-testing-utils
Эластичный поиск | Es тестирование утилит |
---|---|
7.х | 7.х |
8.х | 8.х |
Утилиты тестирования Es предоставляют вам удобный конструктор макетов Elasticsearch, вы можете использовать его следующим образом:
используйте ImdhemyEsUtilsEsMocker;// Создаем ES-клиент, который возвращает фиктивный ответ $client = EsMocker::mock(['tagline' => 'Вы знаете, для поиска.'])->build();
Или вы можете высмеивать последовательность ответов:
используйте ImdhemyEsUtilsEsMocker;// Созданный клиент вернет ответ `$info` с первым запросом, // и ответ `$search` со вторым запросом и т. д. // Примечание: метод `thenFail()` имитирует исключение запроса.$client = EsMocker::mock($info)->then($index)->then($search)->thenFail($error)->build(); // Или вы можете напрямую отклонить первый запрос: $client = EsMocker ::fail($message)->build();
Ниже приведен полный пример использования EsMocker в тесте:
используйте ImdhemyEsUtilsEsMocker;$expected=['tagline' => 'Вы знаете, для поиска.'];$client = EsMocker::mock($expected)->build();$response = $client->info(); $body = (строка) $response->getBody();$this->assertEquals(json_encode($expected), $body);
Класс Faker предоставляет вам набор методов для генерации случайных данных для ваших тестов. Он предоставляет все методы библиотеки Faker, а также новые методы для генерации данных Elasticsearch. Все методы, связанные с Elasticsearch, начинаются с префикса es
.
используйте ImdhemyEsUtilsFaker;$faker = Faker::create();$index = $faker->esIndexName(); // Возвращает случайное имя индекса $createIndex = $faker->esCreateIndex(); // Возвращает тело ответа на создание индекса // Изучите класс Faker, чтобы увидеть все доступные методы
Мохамад Эльдхеми
Все участники
Утилиты для тестирования ES — это программное обеспечение с открытым исходным кодом, лицензированное по лицензии MIT.