php - Laravel Scout和Elastic Search在测试中不起作用

标签 php laravel elasticsearch

当不在测试环境中时,我可以进行 flex 搜索。但是,由于某种原因在测试中创建模型时,它无法正常工作。我尝试过在没有队列的情况下运行它。我可以看到该作业已创建,并且该作业在进行调用之前运行。但是,我能够在测试代码中提取数据库中已有的内容。有什么想法为什么在测试中不起作用?

这是我的测试代码

$user    = $this->newLoggedInUser();
$invoice = factory(App\Invoice::class)->create(['account_id' => $user->account_id]);


$this->get($this->url() . '?q=' . $invoice->title, $this->userAuthHeader($user))
        ->seeJson([
            'Title'       => 'Invoice: ' . $invoice->number . ($invoice->title ? ' - ' . $invoice->title : ''),
            'Description' => 'Customer: ' . $invoice->customer->name,
            'Type'        => 'Invoice',
        ])
        ->assertResponseStatus(200);

最佳答案

我发现我不得不在get调用上稍加延迟,因为在进行调用之前未更新索引。所以我添加了sleep(1)并对其进行了修复。另外,我发现最好在配置中为测试环境指定一个单独的索引。

$user    = $this->newLoggedInUser();
$invoice = factory(App\Invoice::class)->create(['account_id' => $user->account_id]);

sleep(1);

$this->get($this->url() . '?q=' . $invoice->title, $this->userAuthHeader($user))
        ->seeJson([
            'Title'       => 'Invoice: ' . $invoice->number . ($invoice->title ? ' - ' . $invoice->title : ''),
            'Description' => 'Customer: ' . $invoice->customer->name,
            'Type'        => 'Invoice',
        ])
        ->assertResponseStatus(200);

关于php - Laravel Scout和Elastic Search在测试中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41233719/

相关文章:

elasticsearch - 在同一台机器上引导2个ElasticSearch节点:RemoteTransportException:无法将联接请求发送到主节点

php - 如何在 Laravel 的 .env 文件中添加文字引号?

php - 使用 DataTable - 未捕获的 ReferenceError : table is not defined

mysql - Count & GroupBy 函数 Laravel

php - Laravel 5 Force 下载 pdf 文件

javascript - URL::action() 和 Javascript int 变量之间的连接

elasticsearch - 在 ElasticSearch 中返回部分嵌套文档

django - 通过整数字段在 Elasticsearch_dsl 中进行范围查询

php - 如何计算自定义论坛的留言板中的回复数量?

php - 如何让服务器从另一个目录加载php?