2017-03-01 3 views
2

JUnitテストでsearchAsyncをalgoliaから使用しようとしましたが、検索結果が戻ってこないのでデッドロックで終了します。ここに私のコードは次のとおりです。あなたが使用する必要がAlgolia Androidクライアントでユニットテストを行ったときのデッドロック

final Index index = AlgoClient.initIndex("contacts"); 

    Query query = new Query(); 

    query.setHitsPerPage(100); 

    CountDownLatch signal = new CountDownLatch(1); 

    index.searchAsync(query, new CompletionHandler() { 

     @Override 
     public void requestCompleted(JSONObject content, AlgoliaException e) { 

      signal.countDown(); 
     }); 

    signal.await(); 

答えて

3

は、タイムアウトで待っていて、それがタイムアウトしない場合は失敗します。また、CompletionHandlerのエラーをテストする必要があります。

final Index index = client.getIndex("contacts"); 
    Query query = new Query().setHitsPerPage(100); 
    final CountDownLatch signal = new CountDownLatch(1); 

    index.searchAsync(query, new CompletionHandler() { 
     @Override 
     public void requestCompleted(JSONObject content, AlgoliaException e) { 
      if (e == null) { 
       signal.countDown(); // Request success 
      } else { 
       fail(e.getMessage()); // Request error 
      } 
     } 
    }); 

    try { 
     if (!signal.await(10, TimeUnit.SECONDS)) { // returns false when timeout 
      fail("Didn't count down"); 
     } 
    } catch (InterruptedException e) { 
     fail("interrupted"); 
    } 
関連する問題