8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Spring MVC:如何从返回字符串的控制器方法对模型的属性进行单元测试?

user25653727 2月前

63 0

例如,package com.spring.app;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.

例如,

package com.spring.app;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(final Model model) {
        model.addAttribute("msg", "SUCCESS");
        return "hello";
    }

}

我想 model 使用 JUnit home() 的属性及其值 ModelAndView 以实现此目的,但我想使用它, String 因为它更简单。但这不是必须的。

有没有办法 model 在不改变 home() 返回类型的情况下进行检查?还是别无他法?

帖子版权声明 1、本帖标题:Spring MVC:如何从返回字符串的控制器方法对模型的属性进行单元测试?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由user25653727在本站《spring-mvc》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 您可以使用 Spring MVC 测试 :

    mockMvc.perform(get("/"))
                    .andExpect(status().isOk())
                    .andExpect(model().attribute("msg", equalTo("SUCCESS"))) //or your condition
    

    一个完整示例

  • Sâu 2月前 0 只看Ta
    引用 3

    假设控制器包含与视图相关的逻辑,并且您希望使用单元测试覆盖该逻辑。但他可能想要进行集成测试,并且要求错了。不要将我的评论视为您的错误或类似内容。

  • @mh-dev 我只是认为我理解问题的方式不正确,而且我的回答不相关,只是想用控制器单元测试来想象这种情况。所以你必须直接调用控制器方法并将这个模型作为参数传递

  • 我遇到了一个错误,“方法 model() 对于 IndexControllerTest 类型未定义”。在我的控制器中,我有 model.addObject

  • 您可以为此使用 Mockito。

    例子:

    @RunWith(MockitoJUnitRunner.class) 
    public HomeControllerTest {
    
        private HomeController homeController;
        @Mock
        private Model model;
    
        @Before
        public void before(){
            homeController = new HomeController();
        }
    
        public void testSomething(){
            String returnValue = homeController.home(model);
            verify(model, times(1)).addAttribute("msg", "SUCCESS");
            assertEquals("hello", returnValue);
        }
    
    }
    
  • (); map.put(\'msg\',\'SUCCESS\'); assertThat(model.asMap(),is(map));它正在检查是否调用了 addAttribute(\'msg\', \'SUCCESS\'),但实际上并未检查模型。可以将其改为类似这样的方法吗?Map映射=新的HashMap

  • 模型本身是一个接口,但是你可以做一个简单的实现来完成你需要做的事情,并且用它来代替模拟的模型。

返回
作者最近主题: