zumba/elasticsearchunit

支持ElasticSearch客户端的PHPUnit扩展

v2.0.0 2018-12-18 15:02 UTC

This package is auto-updated.

Last update: 2024-08-24 03:59:07 UTC


README

ElasticSearchUnit是一个PHPUnit扩展,用于测试用例,这些测试用例使用官方ElasticSearch客户端作为数据源。

Build Status

需求

  • PHP 5.4+
  • ElasticSearch 1.7+

测试

  1. 安装依赖项 composer install -dev
  2. 运行 ./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,但可以通过将elasticSearchSetUpelasticSearchTearDown别名到setUptearDown,或者在你的相应方法中调用elasticSearchSetUpelasticSearchTearDown,在PHPUnit ~3.7中使用。