使用 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
我正在使用 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