2017-10-16 13 views
0

私はこのようなコードの部分を持っている:Laravel Scout(Algolia付き)のテスト方法は?

public function index(Request $request, Runner $runnerParam) 
{ 
    $name = $request->input('name'); 
    $fromDate = $request->input('from_date'); 
    $toDate = $request->input('to_date'); 

    $runners = Runner::query(); 

    if ($name) { 
     $runners = $runnerParam::search($name); 
    } 

    if ($fromDate && $toDate) { 
     $runners->where('created_at', '<=',$toDate) 
     ->where('created_at', '>=', $fromDate); 
    } 

    switch ($type) { 
     case 1: 
      $runners->where('role', '=', runner::PRO); 
      break; 
     case 2: 
      $runners->where('role', '=', runner::AMATEUR); 
      break;   
    } 

    $runners = $runners->get(); 

    foreach($runners as $runner){ 
    $runner->distance = $runner->stats->sum('distance'); 
    } 

    return $runners;  
} 

の質問は、私はこのためにテストを書くのですか、ですか?テストで '名前'を提供しようとすると、search()関数がテスト中に全く機能していないようなものは返されません。これで何かを見つけるのは本当に難しいですが、情報が不足していて、「アルゴリアのドライバーをヌルに設定する」のようなもので終わっただけでしたが、私はそれができました。あなたはそれをテストにどのように適用しますか?成功したテストの例はまったくありません。ちょっとした質問だけではあまり役に立ちません。

テストの作品:

public function testNameFilter() 
{ 

    $this->logIn(); 

    $runners = factory(runner::class, 30)->create(); 

    $name = $runners[0]->name; 


    $response = $this->json('get', route('api::runners.get'), ['name' => $name]); 

    $responseContent = $response->getContent(); 

    ... 
} 

だから、私は最終的に取得することは、これはこれをテストするための正しい方法ではないことを意味し、空responseContent、です。何かご意見は?

答えて

1

Laravel Scoutを使用するようクラスを適切に設定したことをテストするだけでなく、Laravel Scoutが期待どおりに動作することをテストするのはなぜですか?

public function class_uses_scout() 
{ 
    $this->assertTrue(in_array('Laravel\Scout\Searchable', class_uses('App\FooModel'))); 
} 

public function class_has_searchable_array() 
{ 
    // compare the searchable array with a hardcoded array here 
} 

テスト環境では、必ずLaravel Scoutを無効に設定してください。

+0

ありがとう、私はそれについて考えます。 – Gishas

関連する問題