【问题标题】:Model parameter in Junit test methodJunit测试方法中的模型参数
【发布时间】:2011-02-23 09:57:33
【问题描述】:

我是新来的,正在学习 Spring-MVC 和 Junit。

我正在尝试使用 Junit 为这个基本控制器方法实现测试方法:

public String home(Model model) {
        model.addAttribute(new Contact());
        logger.info("Welcome home!");
        return "home";
    }

测试方法如下:

public void testHome() throws Exception{
        ContactsController contactsController=new ContactsController();
        Assert.assertEquals("home",contactsController.home(new Model()));
    }

问题是,由于 Model 是一个接口,我显然无法创建一个新的 Model 对象来将其作为参数传递给 contactsController.home(...)。你会给我什么选择?我不知道该怎么办。

谢谢

【问题讨论】:

    标签: spring-mvc model junit controller


    【解决方案1】:

    需要传递Model的一个实现,比如ExtendedModelMap

    public void testHome() throws Exception{
        ContactsController contactsController=new ContactsController();         
        Assert.assertEquals("home",contactsController.home(new ExtendedModelMap()));
    }
    

    【讨论】:

    • 是的,但是类型不匹配。那么这是否意味着我必须在控制器方法实现中更改参数类型??
    • @Neets:类型会匹配,因为ExtendedModelMap 实现了Model
    • 谢谢!!我之所以做出这个观察,是因为我已经用 ModelMap 尝试过,但它不起作用,但它确实适用于 ExtendedModelMap。所以谢谢你的帮助=)
    【解决方案2】:

    我知道它太老了.. 但如果有人有同样的问题,只需使用 @Mock 注释来初始化模型对象。某事喜欢:

    @Mock
    Model model;
    
    @BeforeEach
    void setUp() {
        MockitoAnnotations.initMocks(this);
    }
    

    然后根据需要使用模型

    【讨论】:

      猜你喜欢
      • 2017-01-24
      • 2023-03-20
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多