当不在测试环境中时,我可以进行 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/