2017-11-27 7 views
0

나는 데에 실패되지 않습니다어설 코드 다음 onErrorReturn RX 자바

public Single<Post> doSomething(Post post) { 
    String endPoint = "some-url"; 
    JsonObject payload = new JsonObject().put("message", post.getPost()); 
    return oAuth.rxApi(HttpMethod.POST, endPoint, payload) 
      .map(r -> { 
       post.setPostId(r.getString("id")); 
       post.setStatus(PostStatus.PROCESSED); 
       return post; 
      }).onErrorReturn(e -> { 
       post.setStatus(PostStatus.FAILED); 
       post.setError(e.getMessage()); 
       return post; 
      }); 
} 

그리고 나는 그것에 대한 테스트 케이스 다음 작성했습니다.

@Test 
public void shouldHandleFailureWhilePosting() { 
    Post post = new Post(); 
    post.setSocialAccountID("1234"); 
    post.setAccessToken("ABC"); 
    post.setPost("Some post to share!!!"); 

    String shareEndPoint = "some-url"; 
    JsonObject sharePayload = new JsonObject().put("message", post.getPost()); 
    when(oAuth2Auth.rxApi(HttpMethod.POST, shareEndPoint, sharePayload)).thenReturn(Single.error(new NoStackTraceThrowable("Error"))); 

    service.doSomething(post) 
      .subscribe(postResponse -> { 
       assert postResponse.getError().equals("Errorssss"); 
       assert postResponse.getAttachedMedia() == null; 
       assert postResponse.getPostId() == null; 
       assert postResponse.getStatus().equals(PostStatus.FAILED); 
      }); 
} 

이제 내 어설 션은 항상 전달됩니다. 내가 틀린 단언을하더라도, 그것은 항상 녹색이다.

답변

1

어설 션은 관찰 가능 체인의 컨텍스트에서 실행되며 테스트에서 직접 액세스 할 수 없습니다.

대신 관찰 가능 체인에 가입하려면 TestSubscriber을 사용하십시오. 그것에 대한 많은 주장이 있습니다.

+0

감사합니다. TestSubscriber가 작동했습니다. –

1

-ea 옵션을 사용하여 단언 검사를 활성화 했습니까?

어설 션, by default ... 또한 테스트 프레임 워크는 일반적으로 자체 "어설 션"메소드를 노출합니다. 예를 들어, jUnit (org.junit.Assert)에서 정적 assertTrue(), assertArrayEquals(), assertNull() 등을 찾을 수 있습니다.

+0

예,'-ea'가 사용 가능합니다. 다른 테스트 케이스에서도 작동하지만 실패하면 실패합니다. –