当我使用 MockMvc 进行测试时,验证不起作用

问题描述 投票:0回答:1

我正在尝试使用 Spring 框架创建一个 Rest API。我正在使用 Hibernate-Validator 使用 @Valid 注释来验证服务器请求值。

为了测试这一点,我使用 MockMvc。但是,当我在 MockMvc 中请求该地址的值时,验证不起作用。

如果我在没有测试的情况下运行本地服务器并检查它,它工作正常。

我尝试过调试,但它没有加载验证器来进行验证,我该如何解决这个问题?

其他帖子都使用boot,但我没有使用spring boot。 spring boot中的框架不是一样的吗,还是有什么不同?

这是我用于测试的注释。

@WebAppConfiguration @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration

解决方案

将任何适用的依赖项版本更改为最新版本。

<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
</dependency>

添加依赖项

<dependency>
    <groupId>javax.el</groupId>
    <artifactId>javax.el-api</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.el</artifactId>
    <version>3.0.0</version>
</dependency>
spring mockmvc
1个回答
0
投票

MockMvc 默认情况下不启用验证。就我而言,我通过添加 LocalValidatorFactoryBean bean 解决了这个问题:

@Bean
    public LocalValidatorFactoryBean localValidatorFactoryBean() {
        return new LocalValidatorFactoryBean();
    }
© www.soinside.com 2019 - 2024. All rights reserved.