`

Mockito 测试Controller

 
阅读更多

Controller类

LoginController.java

package org.jinglun.base.controller;

import javax.validation.Valid;

import org.jinglun.base.dto.LoginDto;
import org.jinglun.base.service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping(value="/login")
public class LoginController {

    private LoginService loginService;

    @Autowired
    LoginController(LoginService loginService) {
        this.loginService = loginService;
    }

    @RequestMapping(value={"", "/"}, method=RequestMethod.POST)
    public String login(@Valid LoginDto dto, BindingResult result) throws Exception {
        if (result.hasErrors()) {
            return "login";
        }
        if (loginService.login(dto)) {
            return "home";
        } else {
            return "login";
        }
    }
}

 

测试类

LoginControllerTest.java

package org.jinglun.base.controller;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.any;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;

import org.jinglun.base.dto.LoginDto;
import org.jinglun.base.service.LoginService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations = {"classpath:spring-web.xml","classpath:spring-dao.xml","classpath:spring-mybatis.xml","classpath:spring-service.xml"})
public class LoginControllerTest {

    @Test
    public void testLogin() throws Exception {
        try {
            LoginService service = mock(LoginService.class);
            LoginController controller = new LoginController(service);
            when(service.login(any(LoginDto.class))).thenReturn(true);

            MockMvc mockmvc = standaloneSetup(controller).build();
            mockmvc.perform(post("/login")
                    .param("username", "admin")
                    .param("password", "admin"))
                    .andExpect(view().name("home"));
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

分享到:
评论

相关推荐

    对Jfinal框架的Controller进行单元测试

    [JavaWeb]_[初级]_[对Jfinal框架的Controller进行单元测试] 博客文章https://infoworld.blog.csdn.net/article/details/124176492对应的项目, 使用maven管理项目,导入pom.xml.

    费用报销

    费用报销项目描述费用报销系统(ERS)管理着补偿员工在公司... 使用JUnit和Mockito测试了逻辑和功能。 在RDS中使用PostgreSQL管理数据特征所有用户都可以执行以下操作: 登入。 报销。 查看过去的报销请求。 编辑个人

    Beer-Stock-Controller-JUnit-Mockito:验证有效的uma API REST以及cerveja的gerenciamento de estoques de cerveja

    啤酒库存控制器JUnit-Mockito验证有效的单位声明API... 阿波达多斯(Tópicosabordados): Java基本测试框架:JUnit,Mockito和Hamcrest。 基础测试的功能性证明:认证,清单,咨询服务。 TDD:无保留权的增加和减少。

    spring-unit-tests:Spring Boot +单元测试+ Mockito + MVC-用于控制器和服务层

    Spring Boot +单元测试+ Mockito + MVC-用于控制器和服务层

    company_employee_mysql

    2.测试controller 3.测试repository ps:repository全是调用已有方法,有一些就没有编写测试用例了。 1.Delete时出现异常: No serializer found for class org.hibernate.proxy.pojo.javassist....

    spring-controller-test

    通过MockMvc + Mockito进行的控制器测试 src / test / java / com.springapp.mvc / HelloControllerTest1 通过Mockito进行控制器测试 控制器测试可以通过多种方式进行测试。 输入的输出测试(控制器的uri +参数等...

    securemock:允许在测试中创建模拟,而不必授予所有代码危险的权限

    允许在测试中创建模拟,而不必授予所有代码危险的权限。 这将用AccessController块包装嘲笑api。 无需更改代码。 代替: <groupId>org.mockito <artifactId>mockito-core <version>1.9.5 <scope>test ... ...

    Spring.3.x企业应用开发实战(完整版).part2

    17.8.1 BaseController的基类 17.8.2 用户登录和注销 17.8.3 用户注册 17.8.4 论坛管理 17.8.5 论坛普通功能 17.8.6 分页显示论坛版块的主题帖子 17.8.7 web.xml配置 17.8.8 Spring MVC配置 17.9 对Web层进行测试 ...

    Spring3.x企业应用开发实战(完整版) part1

    17.8.1 BaseController的基类 17.8.2 用户登录和注销 17.8.3 用户注册 17.8.4 论坛管理 17.8.5 论坛普通功能 17.8.6 分页显示论坛版块的主题帖子 17.8.7 web.xml配置 17.8.8 Spring MVC配置 17.9 对Web层进行测试 ...

    spring-ng-crud

    使用 TestNG 和 Mockito 的 TDD(测试驱动开发)和 BDD(行为驱动开发) 建筑学 Page Controller Service Dao Model Database 建议 为了更好地使用本教程,我们建议安装 JDK1.8 Apache Tomcat

    java8stream源码-crawler:带有REstAPI的CrawlerExample

    测试用例。 关键技术栈: 1. 使用 Maven 创建 Rest Controller 的 Spring Boot。 2. Junit Mocks 的 Mockito 3. WebCrawler 的 jsoup 库。 4. 请求和响应的 JSON。 列出和搜索单词的 Web Crawler:此 API 用于 GET ...

Global site tag (gtag.js) - Google Analytics