美文网首页
Mockito使用案例

Mockito使用案例

作者: 晚歌歌 | 来源:发表于2020-06-23 14:33 被阅读0次

    需求

    接入facebook第三方登录
    官方接口文档
    https://developers.facebook.com/docs/graph-api/reference
    官方接口调试工具
    https://developers.facebook.com/tools/explorer/

    背景

    由于国内无法连接facebook,需要借助VPN,而我使用的VPN又只支持全局模式,使用的话就无法再访问大多数的国内网站,而一个第三方登录接口既要访问外网,又需要访问内网,无法同时兼顾,因此给程序调试带来非常大的困难

    解决

    1、首先连接VPN,仅对所需要接入的facebook接口做单元测试,确保程序调用facebook接口这一步没有问题
    2、利用mockito Mock掉第三方登录接口中需要调用facebook的两个步骤,然后在需要连接VPN调试的地方做断点就很好做整体测试了

    import com.alibaba.fastjson.JSON;
    import org.junit.Before;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.mockito.InjectMocks;
    import org.mockito.MockitoAnnotations;
    import org.mockito.Spy;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import static org.mockito.Mockito.anyString;
    import static org.mockito.Mockito.when;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = WebApplication.class)
    public class WebApplicationTest {
    
        @Autowired
        @InjectMocks
        private FacebookThirdAccountService facebookThirdAccountService;
    
        @Mock
        private FacebookServiceImpl facebookService;
    
        @Before
        public void before() {
            MockitoAnnotations.initMocks(this);
        }
    
        @Test
        public void test() {
    
            String json="{\n" +
                    "\t\"session_id\":\"fac60ec4-0819-4ab2-ba11-a721d51cb24e\",\n" +
                    "\t\"third_plat_type\":\"facebook\",\n" +
                    "\t\"third_plat_app_id\":\"3240349112643790\",\n" +
                    "\t\"third_access_token\":\"123\",\n" +
                    "\t\"open_id\":\"oakKp04iaRypf8m-rYriuXLIBnf4\",\n" +
                    "\t\"auto_register\":true\n" +
                    "}";
            FacebookClientLoginProxyRequest request= JSON.parseObject(json,FacebookClientLoginProxyRequest.class);
    
            FacebookUserResp facebookUserResp = new FacebookUserResp();
            facebookUserResp.setName("name");
            facebookUserResp.setId("134312112343897");
            when(facebookService.getFacebookUserInfo(anyString())).thenReturn(facebookUserResp);
    
            FaceBookUserPicResp faceBookUserPicResp = new FaceBookUserPicResp();
            FaceBookUserPicDataResp faceBookUserPicDataResp = new FaceBookUserPicDataResp();
            faceBookUserPicDataResp.setUrl("https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=115847753499514&height=100&width=100&ext=1594882912&hash=AeQbJgKXPft04XZ2");
            faceBookUserPicResp.setData(faceBookUserPicDataResp);
    
            when(facebookService.getFacebookUserPic(anyString())).thenReturn(faceBookUserPicResp);
    
            System.out.println(JSON.toJSONString(facebookThirdAccountService.login(request)));
        }
    }
    

    相关文章

      网友评论

          本文标题:Mockito使用案例

          本文链接:https://www.haomeiwen.com/subject/vochfktx.html