使用 Mockito 模拟 Quarkus 模板界面

Mock Quarkus Template interface using Mockito

我正在使用 Quarkus 模板作为基本电子邮件 HTML 模板,如下所示:

@Location("MailTemplate")
Template template;

... code ...

public void sendEmail(final SendEmailRequest sendEmailRequest) {
        final String html = template.data("sendEmailRequest", sendEmailRequest).render();
}

当我尝试使用 @Mock 模拟接口时,它给我一个错误,并且 属性 为 null 而不是模拟。我是这样嘲笑的:

@ExtendWith(MockitoExtension.class)
public class EmailServiceTest {

    @Spy
    @InjectMocks
    EmailService emailService;

    @Mock
    Template templateMock;

    @Test
    void sendEmail() {
        // Given
        SendEmailRequest sendEmailRequest = EmailDataProvider.createSendEmailRequest();

        // When
        emailService.sendEmail(sendEmailRequest);

    }
}

错误:java.lang.NullPointerException: Cannot invoke "io.quarkus.qute.Template.data(String, Object)" because "<local3>.template" is null

我通常像这样模拟其他 services/repositories,但对于这个界面来说似乎不起作用:/知道为什么吗?

问题已在 Quarkus 存储库上发布的问题中解决:https://github.com/quarkusio/quarkus/issues/23897