ElasticSearchUnit is a PHPUnit extension for test cases that utilize the official ElasticSearch Client as their data source.
- PHP 5.4+
- ElasticSearch 1.7+
- Install dependencies
composer install -dev
- Run
./bin/phpunit
<?php
class MyElasticSearchTestCase extends \PHPUnit_Framework_TestCase {
use \Zumba\PHPUnit\Extensions\ElasticSearch\TestTrait;
/**
* Get the ElasticSearch connection for this test.
*
* @return Zumba\PHPUnit\Extensions\ElasticSearch\Client\Connector
*/
public function getElasticSearchConnector() {
if (empty($this->connection)) {
$clientBuilder = new \Elasticsearch\ClientBuilder();
$this->connection = new \Zumba\PHPUnit\Extensions\ElasticSearch\Client\Connector($clientBuilder->build());
}
return $this->connection;
}
/**
* Get the dataset to be used for this test.
*
* @return Zumba\PHPUnit\Extensions\ElasticSearch\DataSet\DataSet
*/
public function getElasticSearchDataSet() {
$dataset = new \Zumba\PHPUnit\Extensions\ElasticSearch\DataSet\DataSet($this->getElasticSearchConnector());
$dataset->setFixture([
'some_index' => [
'some_type' => [
['name' => 'Document 1'],
['name' => 'Document 2']
]
]
]);
return $dataset;
}
public function testRead() {
$result = $this->getElasticSearchConnector()->getConnection()->search(['index' => 'some_index']);
$this->assertEquals(2, $result['hits']['total']);
}
}
If Elasticsearch is not running on localhost, you can provide the hostname of your Elasticsearch instance via environment variables:
ES_TEST_HOST=http://docker:9200 ./bin/phpunit
For Elasticsearch 5.x and greater, use version 2.x.
For Elasticsearch 2.x/1.x, use the version 1.x.
It currently is supporting PHPUnit 4 @before
and @after
but can be used in PHPUnit ~3.7 by either aliasing the elasticSearchSetUp
and elasticSearchTearDown
to setUp
and tearDown
, or by calling elasticSearchSetUp
and elasticSearchTearDown
in your respective methods.