2017-01-18 1 views
0
public void getTerms(boolean showDialog) { 
    service.getTermsFromServer().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new SingleSubscriber<String>() { 
     @Override 
     public void onSuccess(String value) { 

      try { 
       JSONObject jsonObject = new JSONObject(value); 
       JSONObject data = jsonObject.getJSONObject("data"); 
       String content = data.getString("content"); 
       String id = data.getString("id"); 
       if (showDialog) { 
        ***signUpView.showDialog(content, id)***; 
       } else { 
        agreeTerms(id); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     public void onError(Throwable error) { 
      Log.e(getClass().getName(), "Error : " + new Gson().toJson(error.getStackTrace())); 
      ErrorCheck.processError(error, gson, signUpView); 
     } 
    }); 

} 

이 코드를 테스트하는 데 도움을주십시오. 나는 테스트하고 싶은 방법을 붙였다. 여기에서 나는 또한테스트 RX

@Test 
public void testGetTermsCalled(){ 
    String terms= "{\"data\":{\"id\":\"67f07c7a482542\",\"content\":\"<h3>Part of the test</h3>\",\"timestamp\":1484768675815,\"timestampFormatted\":\"2017-01-18T19:44:35\"},\"metadata\":null,\"version\":{\"id\":\"v1\",\"versionStatus\":\"candidate\",\"message\":null}}"; 
    TestSubscriber<String> testSubscriber = new TestSubscriber<>(); 
    signUpService.getTermsFromServer().just(terms).subscribe(testSubscriber); 
    signUpPresenter.getTerms(true); 
    Mockito.verify(signUpView).showDialog("<h3>Part of the test</h3>","67f07c71-1707-4b7a-a168-d7d05a482542"); 

} 

감사를 단위 테스트 코드를 부착 ShowDialog 메서드가

호출되는 것을 확인하려면!

답변

0

RxJavaPlugins.setInitIoSchedulerHandlerRxAndroidPlugins.registerSchedulersHook을 사용하여 자신의 TestScheduler을 지정한 다음 advanceTimeBy 메서드를 사용하여 시간이 경과 한 다음 예상 된 호출이 발생했는지 확인하십시오.