Spring MVC 反射-在控制器Spring中设置私有字段

laximzn5  于 2022-11-14  发布在  Spring
关注(0)|答案(1)|浏览(152)

我使用Spring MVC。
我在控制器中有一个私有字段。这个字段的值来自属性文件,

@Controller
public Class MainController() {

   @Value("${my-value}")
   private int myValue;

}

我必须覆盖selenium测试中的值。我如何覆盖此字段的值,意味着我想设置一个自定义值(这样该值就不会从属性文件中获取)?
能不能这样,

ReflectionTestUtils.setField(MainController.class, "myValue", 3, Integer.class);
kb5ga3dv

kb5ga3dv1#

你应该把这段代码放在你的控制器测试方法中。

@WebMvcTest(controllers = MainController.class, useDefaultFilters = false)
@Import({MainController.class})
public void MainControllerTest{
    @Autowired
    private MainController mainController

    @Test
    should_set_controller_private_field(){
        ReflectionTestUtils.setField(mainController, "myValue", 3)
        assertEquals(ReflectionTestUtils.getField(
            mainController, "myValue"), 3)
    }
}

相关问题