断言在 onErrorReturn rx java 中没有失败

Assertions are not failing in onErrorReturn rx java

我有以下代码:

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

现在我在这种情况下的断言总是通过。即使我断言错误,它也总是绿色的。

断言在可观察链的上下文中执行,不能直接从您的测试中访问。

而是使用 TestSubscriber 订阅可观察链。它有很多断言。

您是否使用 -ea 选项启用了断言检查?

断言,by default,被禁用...此外,测试框架通常公开自己的 "asserts" 方法。例如,在 jUnit (org.junit.Assert) 上,您可能会发现 static assertTrue()、assertArrayEquals()、assertNull() 等