Почти год спустя, я уверен, что вы уже перешли.
Вы заявили:
Эластичный поиск не индексирует созданный пост. Это должно быть проиндексировано
Почему это будет проиндексировано? Если, конечно, у вас нет кода для индексации в вашем setUp()
или при тестировании на внешнем сервере ES и при условии, что он всегда доступен и содержит точные данные, с которыми вы тестируете.
Другое решение состоит в том, чтобы смоделировать запрос, поскольку Elasticsearch возвращает JSON. Все, что нам нужно сделать, это смоделировать HTTP-запрос, который имеет статус 200 и возвращает JSON. Этот JSON-файл мы можем поместить в наш каталог tests/
, и он будет содержать примеры результатов, которые Elasticsearch выдаст.
Пример теста хотел бы это;
$handler = new MockHandler([
'status' => 200,
'transfer_stats' => [
'total_time' => 100
],
'body' => fopen(base_path('tests/Unit/mockelasticsearch.json'), 'r')
]);
$builder = ClientBuilder::create();
$builder->setHosts(['testing']);
$builder->setHandler($handler);
$client = $builder->build();
$response = $client->search([
'index' => 'my_index',
'type' => 'my_type',
'body' => [
[
'query' => [
'simple_query_string' => [
'query' => 'john',
'fields' => ['name']
]
]
]
]
]);
// Test against the "$response", i.e., $this->assertEquals(2 ...) etc.
Затем в файле JSON, который вам нужно будет настроить на основе вашего индекса;
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 121668,
"max_score": 1,
"hits": [
{
"_index": "test",
"_type": "test-type",
"_id": "1111",
"_score": 1,
"_source": {
"id": "1111",
"title": "Some Foo",
"timestamp": "2017-08-02T15:45:22-05:00"
}
},
{
"_index": "test",
"_type": "test-type",
"_id": "2222",
"_score": 1,
"_source": {
"id": "2222",
"title": "Dolor Sit Amet",
"timestamp": "2017-08-02T15:45:22-05:00"
}
},
{
"_index": "test",
"_type": "test-type",
"_id": "3333",
"_score": 1,
"_source": {
"id": "3333",
"title": "Consectetur Adipiscing Elit",
"timestamp": "2017-08-02T15:45:22-05:00"
}
},
{
"_index": "test",
"_type": "test-type",
"_id": "4444",
"_score": 1,
"_source": {
"id": "4444",
"title": "Sed Do Eiusmod",
"timestamp": "2017-08-02T15:45:22-05:00"
}
},
{
"_index": "test",
"_type": "test-type",
"_id": "5555",
"_score": 1,
"_source": {
"id": "5555",
"title": "Tempor Incididunt",
"timestamp": "2017-08-02T15:45:22-05:00"
}
},
{
"_index": "test",
"_type": "test-type",
"_id": "6666",
"_score": 1,
"_source": {
"id": "6666",
"title": "Ut Labore Et Dolore",
"timestamp": "2017-08-02T15:45:22-05:00"
}
},
{
"_index": "test",
"_type": "test-type",
"_id": "7777",
"_score": 1,
"_source": {
"id": "7777",
"title": "Magna Aliqua",
"timestamp": "2017-08-02T15:45:22-05:00"
}
},
{
"_index": "test",
"_type": "test-type",
"_id": "8888",
"_score": 1,
"_source": {
"id": "8888",
"title": "Ut Enim Ad Minim",
"timestamp": "2017-08-02T15:45:22-05:00"
}
},
{
"_index": "test",
"_type": "test-type",
"_id": "9999",
"_score": 1,
"_source": {
"id": "9999",
"title": "Veniam, Quis Nostrud",
"timestamp": "2017-08-02T15:45:22-05:00"
}
},
{
"_index": "test",
"_type": "test-type",
"_id": "0000",
"_score": 1,
"_source": {
"id": "0000",
"title": "Exercitation Ullamco Laboris",
"timestamp": "2017-08-02T15:45:22-05:00"
}
}
]
}
}