- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的测试失败,这是我的测试类。
public class EmailGeneratorServiceTests {
@Mock
JavaMailSender javaMailSender;
EmailGeneratorService emailGeneratorService;
@Before
public void before() {
MockitoAnnotations.initMocks(this);
emailGeneratorService = new EmailGeneratorService(javaMailSender);
}
@Test
public void generateAndSendMessageSuccess() throws MessagingException, IOException {
String email = "test@test.com";
String body = "Some contents.";
String subject = "Some subject";
emailGeneratorService.generateAndSendMessage(email, body, subject);
List<Message> inbox = Mailbox.get(email);
//inbox.size === 0
assertTrue(inbox.size() == 1);
assertEquals(subject, inbox.get(0).getSubject());
assertEquals(body, inbox.get(0).getContent());
}
}
当我调用 inbox.size() 时,我得到 0,但预期为 1。服务器是 smtp。
这是 EmailGeneratorService。
@Service
public class EmailGeneratorService {
SimpleMailMessage simpleMailMessage;
JavaMailSender javaMailSender;
@Autowired
public EmailGeneratorService(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
this.simpleMailMessage = new SimpleMailMessage();
}
public void generateAndSendMessage (String email, String messageBody, String subject) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setTo(email);
simpleMailMessage.setText(messageBody);
simpleMailMessage.setSubject(subject);
javaMailSender.send(simpleMailMessage);
}
}
请写出错误所在并解释错误所在。
最佳答案
您应该捕获JavaMailSender
来获取参数并断言它。
ArgumentCaptor<SimpleMailMessage> emailCaptor = ArgumentCaptor.forClass(SimpleMailMessage .class);
verify(javaMailSender, times(1)).send(emailCaptor.capture());
List<SimpleMailMessage> actualList = emailCaptor.getAllValues();
assertTrue(actualList.size() == 1);
assertEquals(subject, actualList.get(0).getSubject());
assertEquals(body, actualList.get(0).getContent());
和用户ErrorCollector
断言多个值,在@Before
方法之前定义它,如下所示:
@Rule
public ErrorCollector collector= new ErrorCollector();
,并在断言中像这样使用它:
collector.checkThat(getResult(), equalTo("ERROR!"));
你的测试应该是这样的:
public class EmailGeneratorServiceTests {
private static final String EMAIL = "test@test.com";
private static final String BODY = "Some contents.";
private static final String SUBJECT = "Some subject";
@Mock
private JavaMailSender javaMailSender;
private EmailGeneratorService emailGeneratorService;
@Rule
public ErrorCollector collector = new ErrorCollecto();
@Before
public void before() {
MockitoAnnotations.initMocks(this);
emailGeneratorService = new EmailGeneratorService(javaMailSender);
}
@Test
public void generateAndSendMessageSuccess() throws Exception {
// Arrange
emailGeneratorService.generateAndSendMessage(email, body, subject);
// Act
Mailbox.get(email);
// Assert
ArgumentCaptor<SimpleMailMessage> emailCaptor =
ArgumentCaptor.forClass(SimpleMailMessage .class);
verify(javaMailSender, times(1)).send(emailCaptor.capture());
List<SimpleMailMessage> actualList = emailCaptor.getAllValues();
collector.checkThat(actualList.size(), equalTo(1));
collector.checkThat(actualList.get(0).getSubject(), equalTo(SUBJECT));
collector.checkThat(actualList.get(0).getContent(), equalTo(CONTENT));
}
}
关于java - Mockito 与 JavaMailSender,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60813735/
我在数据库MailTemplate中有一个实体,它有一个用于某些操作的邮件模板。现在,我需要为此模板设置一个值。模板是一个简单的 JSP 页面,其中有几个我想在运行时填充的字段。例如,模板是:“您好,
我正在尝试使用 JavaMailSender 在我的 spring MVC web 应用程序和 Tomcat 7 中发送注册确认电子邮件,但它总是返回 NullPointerException。谁能帮
我正在使用 JavaMailSender 通过我的 gmail 帐户向我的客户发送电子邮件。 在我的 gmail 帐户设置中,我可以将值设置为“将邮件发送为”,以便在我的客户电子邮件中显示我的自定义名
当我使用 JavaMailSender 发送带有附件的电子邮件时,它总是失败并抛出以下异常: org.springframework.mail.MailSendException: Failed me
是否有一种简单/轻巧的方法来向Spring的JavaMailSender添加持久性并使其异步运行? Spring是否为此提供任何“内置”支持?我目前正在使用JMS来查看队列,但是对于手头的任务而言
Autowiring javamailsender 时出现以下错误: Field javaMailSender in com.frs.services.MailService.impl.MailSer
我想使用 javamailsender 向多个人发送带有个性化称呼的邮件。 To : Abc,xyz Mail Content: Hi Abc, ... 我可以向多人发送邮件,但无法找到替换可用于收件
我的测试失败,这是我的测试类。 public class EmailGeneratorServiceTests { @Mock JavaMailSender javaMailSende
我正在尝试使用 spring-boot-starter-mail 配置邮件发送器,但出现 stackoverflow 异常: Failed to instantiate [org.springfram
我正在编写一个网络应用程序,每个用户都可以通过ldap进行身份验证,每个用户都有具有相同登录名和密码的电子邮件,在java中我想用特殊帐户发送电子邮件,但是当我尝试验证任何用户身份验证失败时,但是当我
我们使用以下代码片段从 java 发送电子邮件 javaMailSenderImpl.setHost("somehost"); javaMailSenderImpl.setPort(2
我对 Java spring 相当陌生 - 在尝试发送测试电子邮件时遇到以下错误。 发送电子邮件时出错: org.springframework.mail.MailSendException: Mai
在这个问题上我一直在敲脑袋,我已经厌倦了那种沙哑的声音。 我需要在 Tomcat 平台上配置一个 JavaMail 实例。当然,我不想在 war 文件中硬编码连接参数,所以我一直在尝试建立 JNDI
我创建了一个简单的 spring 应用程序,它向用户发送电子邮件。这似乎与“SimpleMailMessage”完美配合(整个消息都是纯文本)。我想要的是将一些文件作为附件发送,所以我尝试使用 jav
我有一个注入(inject) JavaMailSender 的服务。我的服务对其进行配置并发送邮件。我想拦截原始邮件以确保信息正确。我想在 JUnit 中这样做。 你们会怎么做呢? @Service
我使用 Spring Initializer、嵌入式 Tomcat、Thymeleaf 模板引擎生成了一个 Spring Boot Web 应用程序,并将其打包为可执行 JAR 文件。 使用的技术:
我正在尝试在我的 Spring Web 应用程序中配置 JavaMailSender。订单完成后,它会发送一封工作正常的电子邮件。但是,它选择的发件人电子邮件地址是配置中的地址 (a@gmail.co
这是我的第一个问题,所以我想保持简单。我对 Spring Framework 版本 4.1.8.RELEASE 中的 JavaMailSender 有问题。对于特定的 SMTP,它似乎不会将收件人添加
我正在为我的 spring-boot 应用程序编写简单的邮件发送器。但是我在创建 Bean 时遇到了问题。这是我的 MailSender 类 @Component public class MailS
我似乎无法通过 Spring Boot 的 application.properties 正确配置 Spring 的 JavaMailSender 实现。 以下使用标准 JavaMail API 的代
我是一名优秀的程序员,十分优秀!