使用 "real" Thymeleaf 模板引擎测试代码,仅此而已

testing code with a "real" Thymeleaf template engine and nothing else

在我的 Spring 引导项目 (v2.6) 中,我的一个组件正在使用 Thymeleaf 模板引擎生成内容。

我想对我的组件进行单元测试,但我很挣扎,因为它有一个 TemplateEngine 作为构造函数依赖项:

public EmailNotifier(JavaMailSender emailSender,TemplateEngine templateEngine) {
  this.emailSender = emailSender;
  this.templateEngine=templateEngine;
}  

我不想模拟 TemplateEngine(测试不会有很大价值),我更愿意使用“真实的”(和配置的)templateEngine,并确保内容按我的预期生成.但我希望我的测试尽可能“低级”,即不使用 Spring.

加载完整的应用程序

Spring Boot 没有像 Jpa 或 Web 测试那样的 Thymeleaf“切片”,但我想我需要类似的东西。

我怎样才能在我的测试中获得最小的 Spring 魔法,以便它既真实又快速?

这就是我最后做的事情:

@SpringBootTest
class EmailNotifierTest {

  //to have Spring Boot manage the thymeleaf config
  @EnableAutoConfiguration
  @Configuration
  static class MinimalConfiguration {
    @Autowired
    TemplateEngine templateEngine;

    @Bean
    public EmailNotifier notifier(){

      JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
      mailSender.setHost("localhost");
      mailSender.setPort(3025);

      return new EmailNotifier(mailSender, templateEngine);
    }
  }
  
  @Autowired
  EmailNotifier myEmailNotifier;


  //tests using myEmailNotifier go here...

}

我的对象已准备好使用,模板引擎由 Spring 配置,与 运行 在生产中配置时的方式相同。我想我们可以根据需要排除一些自动配置,以加快速度。但就我而言,我没有太多其他可用的依赖项,因此测试仍然很快 运行,这要归功于最小的 Spring 开销。