Os testes de unidade não devem depender de um cluster em execução; em vez disso, devem ser simulados. Para ser mais específico, as respostas do cliente devem ser ridicularizadas. Os utilitários de teste do Elastic Search tornam muito fácil simular as respostas do Elasticsearch.
Você pode usar o compositor
composer require --dev imdhemy/es-testing-utils
Elasticsearch | Es testando utilitários |
---|---|
7.x | 7.x |
8.x | 8.x |
Os utilitários de teste Es fornecem um construtor simulado Elasticsearch fluente, você pode usá-lo da seguinte maneira:
use ImdhemyEsUtilsEsMocker;// Cria o cliente ES que retorna a resposta simulada$client = EsMocker::mock(['tagline' => 'Você sabe, para pesquisa.'])->build();
Ou você pode zombar de uma sequência de respostas:
use ImdhemyEsUtilsEsMocker;// O cliente criado retornará a resposta `$info` com a primeira solicitação, // e a resposta `$search` com a segunda solicitação, e assim por diante.// Nota: o método `thenFail()` zomba de uma exceção de solicitação.$client = EsMocker::mock($info)->then($index)->then($search)->thenFail($error)->build();// Ou você pode falhar diretamente na primeira solicitação:$client = EsMocker::fail($message)->build();
Abaixo está um exemplo completo de como usar o EsMocker em um teste:
use ImdhemyEsUtilsEsMocker;$expected=['tagline' => 'Você sabe, para pesquisa.'];$client = EsMocker::mock($expected)->build();$response = $client->info(); $body = (string) $response->getBody();$this->assertEquals(json_encode($expected), $body);
A classe faker fornece um conjunto de métodos para gerar dados aleatórios para seus testes. Ele fornece todos os métodos da biblioteca Faker junto com novos métodos para gerar dados Elasticsearch. Todos os métodos relacionados ao Elasticsearch começam com o prefixo es
.
use ImdhemyEsUtilsFaker;$faker = Faker::create();$index = $faker->esIndexName(); // Retorna um índice aleatório name$createIndex = $faker->esCreateIndex(); // Retorna o corpo da resposta de criação do índice // Explore a classe Faker para ver todos os métodos disponíveis
Mohamad Eldhemy
Todos os colaboradores
Os utilitários de teste ES são software de código aberto licenciado sob a licença MIT