После почти 8 лет, я должен очистить свои знания от Spring, и все было хорошо, пока мне не приходилось писать модульные тесты. У меня есть следующий модульный тест, который будет проверить один из моей службы, и когда я попытался запустить его, он потерпит неудачу с:Ошибка при загрузке весны при тестировании блока
org.springframework.beans.factory.UnsatisfiedDependencyException
и не в состоянии решить эту услугу eMailNotificationService!
Так вот мой тест Раздел:
@ActiveProfiles("test")
@ComponentScan(basePackages = {"com.middleware.service.email", "it.ozimov.springboot.templating.mail"})
@RunWith(SpringRunner.class)
public class EMailNotificationServiceTest {
@Autowired()
private EMailNotificationService eMailNotificationService;
@MockBean(name = "emailService")
private EmailService emailService;
@Test
public void sendResetPasswordEMailNotification() {
System.out.println(eMailNotificationService);
// TODO: complete the test
}
}
EMailNotificationService, как показано ниже, и это определено в пакете com.middleware.service.email:
@Service()
@Scope("singleton")
public class EMailNotificationService {
private static Log logger = LogFactory.getLog(EMailNotificationService.class);
@Value("${service.email.sender}")
String senderEMail;
@Value("${service.email.sender.name}")
String senderName;
@Value("${service.email.resetPassword.link}")
String resetPasswordLink;
@Autowired
public EmailService emailService;
public void sendResetPasswordEMail(List<EMailUser> userList) {
List<String> allEMails = userList.stream()
.map(EMailUser::getUserEMail)
.collect(Collectors.toList());
userList.stream().forEach(emailUser -> {
final Email email;
try {
email = DefaultEmail.builder()
.from(new InternetAddress(senderEMail, senderName))
.to(Lists.newArrayList(new InternetAddress(emailUser.getUserEMail(), emailUser.getUserName())))
.subject("Reset Password")
.body("")//Empty body
.encoding(String.valueOf(Charset.forName("UTF-8"))).build();
// Defining the model object for the given Freemarker template
final Map<String, Object> modelObject = new HashMap<>();
modelObject.put("name", emailUser.getUserName());
modelObject.put("link", resetPasswordLink);
emailService.send(email, "resetPasswordEMailTemplate.ftl", modelObject);
} catch (UnsupportedEncodingException | CannotSendEmailException ex) {
logger.error("error when sending reset password EMail to users " + allEMails, ex);
}
});
}
}
Как я пишу единичный тест, чтобы мой сервис был инъецирован/автоуведомлен?
возможно, что этот компонент не создан для вашего профиля 'контрольная работа'? – wawek