我有一個測試來驗證空對象的返回(如果該對象的字符串屬性與預先確定的值不匹配)。我的代碼是import guru.springframework.sfgpetclinic.model.Speciality;import guru.springframework.sfgpetclinic.repositories.SpecialtyRepository;import org.junit.jupiter.api.Test;import org.junit.jupiter.api.extension.ExtendWith;import org.mockito.InjectMocks;import org.mockito.Mock;import org.mockito.Mockito;import org.mockito.junit.jupiter.MockitoExtension;import java.util.Optional;import static org.assertj.core.api.Assertions.assertThat;import static org.junit.jupiter.api.Assertions.assertThrows;import static org.mockito.BDDMockito.*;import static org.junit.jupiter.api.Assertions.*;import static org.mockito.BDDMockito.given;import static org.mockito.BDDMockito.then;@ExtendWith(MockitoExtension.class)class SpecialtySDJpaServiceTest { @Mock SpecialtyRepository specialtyRepository; @InjectMocks SpecialtySDJpaService service; @Test void testSaveLambdaNoMatch() { // Given final String MATCH_ME = "MATCH_ME"; Speciality speciality = new Speciality(); speciality.setDescription("Not a match"); Speciality savedSpeciality = new Speciality(); savedSpeciality.setId(1L); // Need mock to only return on match MATCH_ME string given(specialtyRepository.save(argThat(argument -> argument.getDescription().equals(MATCH_ME)))).willReturn(savedSpeciality); // When Speciality returnedSpeciality = service.save(speciality); // Then assertNull(returnedSpeciality); } // Other tests...}此測試失敗并顯示消息org.mockito.exceptions.misusing.PotentialStubbingProblem: Strict stubbing argument mismatch. Please check:- this invocation of 'save' method:specialtyRepository.save(guru.springframework.sfgpetclinic.model.Speciality@19ae6bb我認為問題在于 argThat() 使用精確匹配方案。我想將模擬匹配設置為寬松通過@Mock(lenient = true)SpecialtyRepository specialtyRepository 但 Intellij 不識別 lenient 參數。我正在使用 JUnit 5 和 Mockito 2.23.0
1 回答

慕神8447489
TA貢獻1780條經驗 獲得超1個贊
@Mock(lenient = true) 是在Mockito
version中引入的2.23.3
。
您必須升級或使用other way
來編寫以下內容:
lenient().when(specialtyRepository.save(argThat(argument?->?argument.getDescription().equals(MATCH_ME)))).willReturn(savedSpeciality);
添加回答
舉報
0/150
提交
取消