mockito、easymock、powermock使用(4)-Controller层测试

目的

编写controller层测试代码,模拟代码的执行结果

准备工作

mockito、easymock、powermock使用(2)-准备工作

测试代码

import com.suning.work.controller.MockController;
import com.suning.work.model.MockBean;
import com.suning.work.service.MockService;
import junit.framework.TestCase;
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentMatchers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.modules.junit4.PowerMockRunner;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;


@RunWith(PowerMockRunner.class)
/**
 * 解决冲突
 * previously initiated loading for a different type with name "javax/management/MBeanServer"
 * Failed to instantiate [ch.qos.logback.classic.LoggerContext]
 */
@PowerMockIgnore("javax.management.*")
public class MockControllerTest extends TestCase {

    /**
     * 自动注入
     */
    @InjectMocks
    MockController mockController;

    /**
     * 自动注入
     * Mock会自动注入到InjectMocks对象中
     */
    @Mock
    MockService mockService;

    HttpServletRequest request;

    @Before
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
         /**
         *  mock request 对象
         */
        request = (HttpServletRequest) EasyMock.createMock(HttpServletRequest.class);
    }

    @Test
    public void test(){
        Mapmap=null;

        //模拟数据
        MockBean bean=new MockBean();
        bean.setCode("1001");
        bean.setCreateDate("2018-12-12 12:12:12");

        //模拟不同条件
        PowerMockito.when(mockService.update(bean)).thenReturn(true);
        map= mockController.editSave(request,bean);
        System.out.println(map.get("message"));

        //模拟不同条件
        PowerMockito.when(mockService.update(bean)).thenReturn(false);
        map=mockController.editSave(request,bean);
        System.out.println(map.get("message"));

        //模拟不同条件
        PowerMockito.when(mockService.update(ArgumentMatchers.any(MockBean.class))).thenReturn(false);
        map=mockController.editSave(request,bean);
        System.out.println(map.get("message"));
    }

}

执行结果

2018-12-30 16:43:44.556 INFO  com.suning.work.controller.MockBaseController - 1001
修改成功!
2018-12-30 16:43:44.574 INFO  com.suning.work.controller.MockBaseController - 1001
修改失败!
2018-12-30 16:43:44.579 INFO  com.suning.work.controller.MockBaseController - 1001
修改失败!

 

你可能感兴趣的:(代码质量)