0

我正在尝试学习 Reactor 项目并遇到问题。

@Test
@DisplayName("check that standaloneUser fields are correct")
void validateUserFields() {
    userService.save(standaloneUser).subscribe();
    assertEquals(userService.count().block(), Long.valueOf(1));
    User user = userService.findByEmail("test@gmail.com").block();
    assertNotNull(user);
    assertNotNull(user.getId());
    assertEquals(user.getFirstName(), "test");
    assertEquals(user.getLastName(), "test");
    assertNotEquals(user.getPassword(), "test");
    assertEquals(user.getRole(), Role.CANDIDATE);
    assertNotNull(user.getCreatedDate());
    assertNull(user.getStoppedDate());
    assertEquals(user.getEmail(), "test@gmail.com");
}

有时 block() 方法返回 null。谁能给我解释一下?谢谢

4

1 回答 1

3

block() 可以返回null,表示Mono完成为空,在这种情况下表示未找到用户。

难道是没有妥善保存?(尽管您断言用户数)

请注意,您这样做userService.save(standaloneUser).subscribe()。这种形式通常并不理想,因为它是“异步即发即弃”:

  • async -> 它可能在后续断言之后完成
  • 触发并忘记 -> 没有错误处理程序意味着它可能会因错误而终止并将其隐藏起来

养成在调用时至少设置 onNext 和 onError 处理程序 lambdas 的习惯subscribe

于 2017-08-30T08:13:21.143 回答