2011-02-23 51 views
1

我是新来的,我正在学习Spring-MVC和Junit。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对象,将其作为参数传递给contactsController.home(...)。你会给我什么选择?我不知道该怎么做。

感谢

回答

4

你需要传递的Model的实现,如ExtendedModelMap

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

耶但随后的类型不匹配。那么这是否意味着我必须在控制器方法实现中更改参数类型? – Neets

+1

@Neets:类型将匹配,因为'ExtendedModelMap'实现'Model'。 – axtavt

+0

谢谢!!我做了这个观察,因为我已经用ModelMap试过了,并且它不起作用,但它可以与ExtendedModelMap一起工作。所以感谢您的帮助=) – Neets