在對服務層的每個方法進行單元測驗時,我遇到了以下場景,我無法弄清楚如何測驗:
public class UserServiceImpl{
@Autowired
UserRepository userRepository;
public void abc(){
xyz(obj);
}
private void xyz(){
userRepository.save(obj);
}
}
我想測驗的是abc()方法。在該方法中,它呼叫xyz()哪個是使用依賴項的PRIVATE方法userRepository。那么,當我為該abc()方法創建單元測驗時,我是否需要關注該xyz()方法,因為它使用了依賴項?如果是,我需要遵循哪些步驟?
uj5u.com熱心網友回復:
正如您所寫,您需要處理xyz()方法及其對userRepository. 你需要模擬userRepository如下:
@ExtendWith(MockitoExtension.class)
public class UserServiceImplTest {
@Mock
private UserRepository userRepository;
@InjectMocks
public UserServiceImpl userService;
@BeforeEach
public void setUp() throws Exception {
// Mock UserRepository behaviour
doReturn(//return value).when(this.userRepository).save(any());
}
// Your tests here
}
uj5u.com熱心網友回復:
由于這是一個 void 方法,您要做的是驗證save依賴項的方法是否已使用引數呼叫了一次obj。你可以通過使用類似的東西來做到這一點Mockito。你的單元測驗看起來像這樣:
@Mock
private UserRepository mockUserRepository;
@InjectMocks
private UserServiceImpl sut;
@Test
public void abc_savesObject() {
// Arrange
...
// Act
sut.abc();
// Assert
verify(mockUserRepository,times(1)).save(obj);
}
一些有用的鏈接:
- https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#4
- https://www.baeldung.com/mockito-verify
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/335971.html
上一篇:Kibana搜索模式問題
下一篇:SpringBoot/Java:如何在物件Map<String,Map<String,Map<String,Long>>>中計算Item并獲取結果
