Прежде всего, приложение успешно компилируется и работает.Шаблон тестового шаблона Spring junit может отсутствовать
Я пытаюсь выполнить тестирование моих контроллеров весной. мой тест-контроллер выглядит следующим образом:
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = { Application.class })
@Rollback
@Transactional
@WebMvcTest(PasswordResetController.class)
public class PasswordResetControllerTest {
@Autowired
private MockMvc mvc;
@Test
public void getPasswordForgetView() throws Exception {
this.mvc.perform(get("/password/forget"))
.andExpect(status().isOk());
}
}
с этим я получаю следующее исключение:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template "password-forget-html", template might not exist or might not be accessible by any of the configured Template Resolvers
если я отладку конфигурации, я вижу, что она идет корыто моих WebMvcConfig.class
там я Направьте шаблонов /WEB-INF/templates/
папка:
@Configuration
@ComponentScan(basePackages = { "com.tmp" })
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Value("${mail.templates.cacheable}")
private boolean mailTemplatesCacheable;
@Value("${html.templates.cacheable}")
private boolean htmlTemplatesCacheable;
public static final String URL_RESOURCES = "/modules/**";
public static final String PATH_RESOURCES = "/modules/";
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler(URL_RESOURCES).addResourceLocations(PATH_RESOURCES);
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("login");
}
@Bean
public TemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setPrefix("/WEB-INF/templates/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("HTML5");
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setCacheable(htmlTemplatesCacheable);
return templateResolver;
}
@Bean
public TemplateResolver mailResolver() {
SpringResourceTemplateResolver result = new SpringResourceTemplateResolver();
result.setPrefix("/WEB-INF/mail/");
result.setSuffix(".html");
result.setTemplateMode("HTML5");
result.setCacheable(mailTemplatesCacheable);
result.setOrder(2);
result.setCharacterEncoding("UTF-8");
return result;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addTemplateResolver(templateResolver());
templateEngine.addTemplateResolver(mailResolver());
templateEngine.addDialect("java8time", java8TimeDialect());
templateEngine.addDialect("sec", springSecurityDialect());
templateEngine.addDialect("layout", thymeleafLayoutDialect());
return templateEngine;
}
@Bean
public ThymeleafViewResolver viewResolver() {
ThymeleafViewResolver thymeleafViewResolver = new ThymeleafViewResolver();
thymeleafViewResolver.setTemplateEngine(templateEngine());
thymeleafViewResolver.setCharacterEncoding("UTF-8");
thymeleafViewResolver.setCache(false);
return thymeleafViewResolver;
}
// Dialect Beans
...
}
И да, есть шаблоны в папке.
Любые предложения? Спасибо заранее-х
Он выглядит как 'WebMvcConfig' из контекста для испытаний. попробуйте добавить 'WebMvcConfig' в' @ ContextConfiguration' напрямую. –
Если я его отлаживаю, он проходит через класс WebMvcConfig –
Является ли '/ WEB-INF/templates /' видимым в classpath? –