getMockBuilder(\Magento\Elasticsearch\SearchAdapter\ConnectionManager::class) ->disableOriginalConstructor() ->getMock(); $this->clientMock = $this->getMockBuilder(\Magento\Elasticsearch6\Model\Client\Elasticsearch::class) ->disableOriginalConstructor() ->getMock(); $contentManager ->expects($this->any()) ->method('getConnection') ->willReturn($this->clientMock); /** @var \Magento\Framework\Search\Request\Config\Converter $converter */ $converter = $objectManager->create(\Magento\Framework\Search\Request\Config\Converter::class); $document = new \DOMDocument(); $document->load($this->getRequestConfigPath()); $requestConfig = $converter->convert($document); /** @var \Magento\Framework\Search\Request\Config $config */ $config = $objectManager->create(\Magento\Framework\Search\Request\Config::class); $config->merge($requestConfig); $this->requestBuilder = $objectManager->create( \Magento\Framework\Search\Request\Builder::class, ['config' => $config] ); $this->loggerMock = $this->getMockForAbstractClass(\Psr\Log\LoggerInterface::class); $this->adapter = $objectManager->create( \Magento\Elasticsearch\Elasticsearch5\SearchAdapter\Adapter::class, [ 'connectionManager' => $contentManager, 'logger' => $this->loggerMock ] ); } /** * @magentoAppIsolation enabled * @magentoConfigFixture default/catalog/search/engine elasticsearch6 * @magentoConfigFixture current_store catalog/search/elasticsearch_index_prefix adaptertest * @return void */ public function testQuery() { $this->requestBuilder->bind('fulltext_search_query', 'socks'); $this->requestBuilder->setRequestName('one_match'); $queryRequest = $this->requestBuilder->create(); $exception = new \Exception('Test Message'); $this->loggerMock->expects($this->once())->method('critical')->with($exception); $this->clientMock->expects($this->once())->method('query')->willThrowException($exception); $actualResponse = $this->adapter->query($queryRequest); $this->assertEmpty($actualResponse->getAggregations()->getBuckets()); $this->assertEquals(0, $actualResponse->count()); } /** * Get request config path * * @return string */ private function getRequestConfigPath() { return __DIR__ . '/../../_files/requests.xml'; } }