2016-12-20 10 views
1

テスト環境ではないときに弾力検索が動作します。しかし、何らかの理由でテストでモデルを作成しても機能しません。私はキューとそれをキューなしで実行しようとしました。私は、ジョブが作成され、コールを行う前にジョブが実行されることがわかります。しかし、私はテストコードですでにデータベースにあるものを引き出すことができます。それがテストでうまくいかない理由は何ですか?Laravel ScoutとElastic Searchがテストで動作しない

これは私が呼び出しが行われた前に、インデックスが更新されなかったとして、get呼び出しに若干の遅延を追加するために持っていたことが分かった私のテストコード

$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); 

答えて

-1

です。だから私はsleep(1)を追加し、それを修正しました。また、configのテスト環境に別のインデックスを指定するのが最善であることがわかりました。

$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); 
関連する問題