zumba / elasticsearchunit
支持ElasticSearch客户端的PHPUnit扩展
v2.0.0
2018-12-18 15:02 UTC
Requires
- php: >=5.6.0
- ext-curl: *
Requires (Dev)
- elasticsearch/elasticsearch: ~5.1.0
- phpunit/phpunit: 4.7.7
This package is auto-updated.
Last update: 2024-08-24 03:59:07 UTC
README
ElasticSearchUnit是一个PHPUnit扩展,用于测试用例,这些测试用例使用官方ElasticSearch客户端作为数据源。
需求
- PHP 5.4+
- ElasticSearch 1.7+
测试
- 安装依赖项
composer install -dev
- 运行
./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']); } }
使用Docker/VM等进行测试
如果Elasticsearch不在本地主机上运行,您可以通过环境变量提供Elasticsearch实例的主机名
ES_TEST_HOST=http://docker:9200 ./bin/phpunit
Elasticsearch版本支持
对于Elasticsearch 5.x及以上版本,使用2.x版本。
对于Elasticsearch 2.x/1.x版本,使用1.x版本。
关于PHPUnit版本的说明
它目前支持PHPUnit 4的@before
和@after
,但可以通过将elasticSearchSetUp
和elasticSearchTearDown
别名到setUp
和tearDown
,或者在你的相应方法中调用elasticSearchSetUp
和elasticSearchTearDown
,在PHPUnit ~3.7中使用。