我想測驗我的洗掉方法,它看起來像:
public void deleteUser(String id) {
var userEntity = userRepository.findById(Integer.valueOf(id))
.orElseThrow(() -> new UserNotFoundException("Id not found"));
if (userEntity.getLastAccessDate() == null) {
throw new ProhibitedAccessException("Policy has been violated");
}
userRepository.delete(userEntity);
}
我在存盤庫中的洗掉方法如下:
@Modifying
@Query("update UserEntity u set deleted = true where u = :userEntity")
void delete(UserEntity userEntity);
我寫了以下測驗:
@Test
void deleteUserTest(){
final int id = 1;
UserEntity userEntity = new UserEntity();
var idString = String.valueOf(id);
when(userRepository.findById(id)).thenReturn(Optional.of(userEntity));
assertThrows(RuntimeException.class, () -> userService.deleteUser(idString));
}
該測驗運行良好,但未涵蓋
userRepository.delete(userEntity);
你能幫我嗎 - 我怎樣才能將它添加到我的測驗中?以前,我曾嘗試通過驗證來做到這一點,但沒有幫助。
uj5u.com熱心網友回復:
測驗覆寫率意味著您的代碼行被呼叫。如果你模擬一個物件,你不是在呼叫真正的代碼,而只是模擬行為
您只測驗 userService 的實作并模擬 userRepository 的行為。因此,您的測驗僅涵蓋 userService.deleteUser(...) 方法中的代碼,而不涵蓋 userRepository 中的代碼。如果您想覆寫您的 userRepository,則必須使用“真實”userRepository 撰寫測驗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/534050.html
上一篇:使用地圖從字符中檢索單詞
