Автопроводка в Юнит - PullRequest
1 голос
/ 29 апреля 2020

Я пытаюсь автоматически связать два объекта из контекста, но, похоже, получаю исключение Nullpointer для обоих Configuraiton и JavaMailSender, что я мог упустить. Если я выполняю автопровод только EmailService, он работает правильно, однако мне нужно передать фиктивный объект конструктору, поэтому я продолжаю в том же духе, что и сейчас. Если я аннотирую свой EmailService объект с помощью @Autowire, он будет работать.

@SpringBootTest

    public class EmailServiceTest {

        @Autowired
        private Configuration configuration;

        @Autowired
        private JavaMailSender javaMailSender;

        private AuthUser authUser = Mockito.mock(AuthUser.class);

        private EmailService emailService = new EmailService(javaMailSender,configuration,authUser);


 @Test
public void testSendAttachment() throws IOException {
    List<Attachment> attachments = new ArrayList<>();
    attachments.add(new Attachment(new Archive(TestData.getDocs(), "test").getZipArchive(), "documents.zip"));
    attachments.add(new Attachment(new Archive(TestData.getDocs(), "test").getZipArchive(), "documents2.zip"));
    Email mail = new Email("a",
            "b",
            "Requested archive attached",
            "Thank you for using our services, please refer to the attached archive", attachments);
    emailService.sendMailWithAttachment(mail);

}

  @Test
public void shouldSendConfirmationEmail(){
    Mockito.when(authUser.getUsername()).thenReturn("email@email.com");
    emailService.sendConfirmationToCooperateEmail();
}

1 Ответ

0 голосов
/ 29 апреля 2020

Spring создает EmailServiceTest. java Свойства Configuration и EmailService по умолчанию имеют значение null, поскольку мы инициализируем EmailService прямо на свойстве Email service. Получаем нулевые значения немедленно и только тогда Spring вводит значения в Configuration и EmailSender.

 @Autowired
private Configuration configuration;

@Autowired
private JavaMailSender javaMailSender;

private AuthUser authUser = Mockito.mock(AuthUser.class);


@Test
public void testSendAttachment() throws IOException {
    EmailService emailService = new EmailService(javaMailSender, configuration, authUser);
...