Junit测试方法中的模型参数

时间:2011-02-23 09:57:34

标签: spring-mvc model junit controller

我是新来的,我正在学习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(...)。你会给我什么选择?我不知道该怎么做。

由于

2 个答案:

答案 0 :(得分:5)

您需要传递Model的实施,例如ExtendedModelMap

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

答案 1 :(得分:0)

我知道它太旧了..但是如果有人遇到同样的问题,只需使用@Mock注释即可初始化Model对象。像这样:

@Mock
Model model;

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

然后只需根据需要使用模型