2017-08-29 52 views
0

我在嘗試學習項目Reactor並且遇到問題。Spring WebFlux:block()方法在Spring Data Reactive MongoDB中返回null

@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("[email protected]").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(), "[email protected]"); 
} 

有時block()方法返回null。 誰能解釋我這個? 感謝

回答

1

block()可以返回null,則意味着Mono完成空,在這種情況下,意味着用戶沒有被發現。

難道是它沒有妥善保存? (雖然你聲稱用戶數)

請注意,你做userService.save(standaloneUser).subscribe()。這種形式往往是不理想的,因爲它是「異步發射後不管」:

  • 異步 - >它可能完成隨後聲稱
  • 消防和忘記 - 「沒有錯誤處理程序是指它可能會因出錯而終止,並將其隱藏起來

在調用subscribe時,養成至少設置onNext和onError處理函數lambdas的習慣。