使用 Mockito
我們有這種型別的服務,它從 application.yml 中獲取“regexPattern”值,或者如果未定義則獲取默認值
@Service
@Log4j2
public class EmailValidationService {
@Value("${validators.emailValidator.regexPattern:'" DefaultEmailValidator.DEFAULT_PATTERN "'}")
private String regexPattern;
public EmailValidator getEmailValidator(){
return new DefaultEmailValidator(regexPattern);
}
}
當使用 Mockito 時,我們想使用這個服務(真正的服務)而不是模擬它,所以我們使用:
@Spy
private EmailValidationService emailValidationService = new EmailValidationService();
但是“regexPattern”變數總是得到空值而不是默認值
有任何想法嗎?
uj5u.com熱心網友回復:
在您的測驗中使用@SpyBean而不是 a :@Spy
@SpyBean
private EmailValidationService emailValidationService;
為此,您需要一個spring-boot-test依賴項并確保您的測驗使用 Spring runner 運行:
如果您使用的是 JUnit 4,請不要忘記將 @RunWith(SpringRunner.class) 添加到您的測驗中,否則注釋將被忽略。如果您使用的是 JUnit 5,則無需將等效的 @ExtendWith(SpringExtension.class) 添加為 @SpringBootTest 并且其他 @...?Test 注釋已經使用它進行了注釋。
另一種選擇是在 Spy 中顯式設定欄位值:
ReflectionTestUtils.setField(emailValidationService, "regexPattern", DefaultEmailValidator.DEFAULT_PATTERN);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/477140.html
上一篇:如何正確匯入三個js庫?
