在带有Slice的Spring Boot中使用MockMVC测试静态内容

时间:2019-02-27 19:36:14

标签: spring-boot spring-mvc testing spring-web mockmvc

我正在尝试找出一种方法,使用MockMVC使用仅自动配置org.springframework.web.servlet.resource.ResourceHttpRequestHandler(而不是控制器)的WebSlice来测试内容的提供方式

我尝试过这样的事情:

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

但是{}是缺省值,它将查找所有控制器。有没有办法排除所有控制器,但保留我的应用程序具有的其他基本spring-web东西,以便我可以仅测试静态资产片?

1 个答案:

答案 0 :(得分:0)

如何针对功能强大的服务器测试静态内容?

这里是sample application,用于显示我在说什么。

此类测试的切入点是@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类:

Spring Security overrides Cache-Control标头。也许这不是我们可能想要的,尤其是对于静态资源。

另请参见:How to enable HTTP response caching in Spring Boot

@LeanWebTest 除了指定的配置类外,不使用应用程序中的任何@Bean 。 (未创建@Controllers

我看到适用于@LeanWebTest的以下方面:

  • robots.txt文件
  • javax.servlet.Filter s
  • 静态资源压缩
  • 静态资源缓存
  • 等。

该示例应用程序进行了一些测试:


请注意,该项目只是对该概念的粗略演示