Тестирование статического содержимого с помощью MockMVC в Spring Boot с Slice - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь найти способ протестировать с MockMVC обслуживание контента с помощью WebSlice, который только автоматически настраивает org.springframework.web.servlet.resource.ResourceHttpRequestHandler (а не контроллеры)

Я пробовал что-то вроде этого:

@RunWith(SpringRunner.class)
@WebMvcTest(
    controllers = {}
)
public class StaticAssetsMVCTest {

но {} является значением по умолчанию и ищет все контроллеры.Есть ли способ исключить все контроллеры, но сохранить другие базовые функции Spring-Web, которые есть в моем приложении, чтобы я мог тестировать только фрагменты статических ресурсов?

1 Ответ

0 голосов
/ 17 мая 2019

А как насчет тестирования статического контента на полномасштабном сервере ?

Вот пример примера приложения, чтобы показать, о чем я говорю.

Точкой входа для таких тестов является @LeanWebTest аннотация:

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = {
    MvcConfig.class,
    WebSecurityConfig.class
})
@EnableAutoConfiguration(exclude = {
    DataSourceAutoConfiguration.class,
    JpaRepositoriesAutoConfiguration.class
})
@Retention(RetentionPolicy.RUNTIME)
public @interface LeanWebTest {
}

@LeanWebTest - это @SpringBootTest с использованием полностью настроенного сервера вСлучайный порт.

Указывает следующие @Configuration классы:

  • MvcConfig - в примере проекта он пуст.Но это может повлиять на то, как сервер обслуживает статический контент
  • WebSecurityConfig

Spring Security переопределяет Cache-Control заголовки.Возможно, это не то, что нам может понадобиться, особенно для статических ресурсов.

См. Также: Как включить кэширование ответов HTTP в Spring Boot

@LeanWebTest не использует никаких @Bean s из приложения, кроме указанных классов конфигурации.(№ @Controllers создан)

Я вижу следующие аспекты, применимые к @LeanWebTest с:

  • robots.txt файл
  • javax.servlet.Filter с
  • статические ресурсы сжатие
  • статические ресурсы кэширование
  • и т. Д.

Образец приложения имеетнекоторые тесты:

  • RobotsTxtTest - тестирование файла robots.txt с использованием RobotsTxt библиотеки
  • StaticContentTest проверяет правильность обслуживания статического контента.Также проверяет, что Cache-Control заголовки установлены так, как было указано в application.properties
  • TomcatRemoteIpHeaderTest - проверяет, правильно ли tomcat применяет настроенное remote-ip-header свойство

Обратите внимание, что проект является приблизительной демонстрацией концепции

...