@Configuration
@EnableWebMvc
@ComponentScan("com.xyz.web")
class BaseTestConfig extends WebMvcConfigurerAdapter {
@Bean
AccountService accountService() {
return Mockito.mock(AccountService)
}
}
class Test {
@Autowired WebApplicationContext wac
MockMvc mockMvc
@BeforeClass
void setup() {
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build()
}
@Test
void testSubmitPageFails() {
mockMvc.perform(post("/createAccount")
.param("account.username", "x")
.param("confirmEmail", "y")
.param("account.firstName", "")
.param("account.lastName", "")
.param("account.zip", ""))
.andExpect(model().errorCount(5))
.andExpect(view().name("account/createAccount"))
.andExpect(status().isOk())
}
@Test
void testSubmitPageSucceeds() {
mockMvc.perform(post("/createAccount")
.param("account.username", "test@test.com")
.param("confirmEmail", "test@test.com")
.param("account.firstName", "John")
.param("account.lastName", "Doe")
.param("account.zip", "22102"))
.andExpect(flash().attributeCount(1))
.andExpect(status().isMovedTemporarily())
.andExpect(redirectedUrl("/home"))
}
}
我定义了我的测试类和配置类,如上所示。但是,没有调用具有 @Valid 注释的控制器方法。似乎它们在 Spring 容器初始化期间没有注册。
当我运行应用程序时,这些验证器注册得很好。
知道为什么我的控制器测试忽略了我的自定义验证器吗?