某项目用户修改昵称功能实现及测试

某某项目用户信息修改功能实现及测试

写在前面的话:初入贵圈,菜鸟一枚,分享一些想法,共勉,求轻虐。

需求:通过restclient插件模拟修改用户信息功能,具体行为:先登录获取用户账户token,通过token找到对应用户信息,并修改用户nickname。PS:部分功能已经封装好,这里正在附录展示直接相关部分;

app:eclipse(项目框架已搭建好),navicat(查看mySQL数据),restclient插件(用于模拟登录)

Step1: 写代码,如下

文件:Bumofang/.../MemberController.java

package com.fh.controller.bmf.app;
import ...略 下同
@Controller("AppMemberController")
@RequestMapping(value = "/app/user")
public class MemberController extends AppBaseController {
  @RequestMapping(value = { "/update" }, method = {RequestMethod.POST }, produces = {JSON_UTF8})
    @ResponseBody
/*login*/
public Object login(@RequestBody Map<String, String> map) throws Exception { String mobile = map.get("mobile"); if(StringUtils.isBlank(mobile)){ return ResponseMessageEnum.ARGUMENT_EXCEPTION.toString(); } PageData pd = new PageData(); pd.put("MOBILE", mobile); pd = memberService.findByMobile(pd); if(pd == null || pd.isEmpty()){ return ResponseMessageEnum.ERROR_LOGIN.toString(); } String userId = pd.getString("ID"); String token = AccessTokenManager.getInstance().putToken(userId); Map<String,Object> tokenMap = new HashMap<String,Object>(); tokenMap.put("token", token); return ResponseMessageEnum.SUCCESS.appendMapToString(tokenMap); }
/*update 修改用户昵称*/
public Object update(@RequestBody Map<String, String> map) throws Exception{ //Map<>map方法映射用户输入的信息 
  Object result = getUser();
  
if(result instanceof ResponseMessageEnum){
    
return result.toString();
  }
//通过token获取mySQL里的用户信息,getUser()方法见附录1
  PageData pd = (PageData)result; //将用户数据赋值给pd
  String nickname = map.get("nickname"); //获取restclient插件中update的数据,即{"nickname":"afterTest"}
  pd.put("NICKNAME", nickname); //将{"nickname":"afterTest"}数据传给pd
  try {
   memberService.edit(pd);
//将pd数据反馈给mySQL数据表
  }

  catch (Exception e) {
    return ResponseMessageEnum.SERVER_SQL_ERROR.toString();
  }
  return ResponseMessageEnum.SUCCESS.appendMapToString(new HashMap<String, Object>());
//在restclient插件返回{“data":{},"code":200,"msg":"success"},appendMapToString()方法见附录4
}
}

Step2:测试:用restclient插件登录,body参数{"mobile":"15068880000"},返回token值为e59dfcbf7f40662aee9a27f4f0ee8303,如图1,此时对应的mySQL数据如图2

Step3:测试:用restclient插件模拟update,url:http://localhost:8080/bumofang/app/user/update?token=e59dfcbf7f40662aee9a27f4f0ee8303;body参数{"nickname":"afterTest"},如图3;修改成功后的对应的mySQL数据如图4

 

附录1

文件:Bumofang/.../ AppBaseController.java

package com.fh.controller.base;

import ...

public class AppBaseController extends BaseController{

    @Autowired

    protected HttpServletRequest request;

    @Resource(name = "memberService")

    protected MemberService memberService;

    protected Object getUser(){

       String token = request.getParameter("token");

       if(StringUtils.isBlank(token)){

           return ResponseMessageEnum.ARGUMENT_TOKEN_EMPTY;

       }  

       AccessToken accessToken = AccessTokenManager.getInstance().getToken(token);

       if(accessToken == null){

           return ResponseMessageEnum.ARGUMENT_TOKEN_INVALID;

       }

      

       String userId = accessToken.getUserId();

      

       PageData pd = new PageData();

       pd.put("ID", userId);

       try {

           PageData rs = memberService.findById(pd);

           if(rs == null || rs.isEmpty()){

              return ResponseMessageEnum.ERROR_USER_NOT_EXIT;

           }

          

           return rs;

       } catch (Exception e) {

           return ResponseMessageEnum.SERVER_SQL_ERROR;

       }

      

    }

 

}

 

 

附录2:

文件:Bumofang/.../MemberService.java

package com.fh.service.bmf.member;

@Service("memberService")

public class MemberService { 

public void edit(PageData pd)throws Exception{

       dao.update("MemberMapper.edit", pd);  // MemberMapper.edit见附录3

    }

}

 

 

附录3::

文件:Bumofang/.../MemberMapper.xml

<mapper namespace="MemberMapper">

    <!-- 修改 -->

    <update id="edit" parameterType="pd">

       update  MEMBER

           set

              NUMBER = #{NUMBER},

              USERNAME = #{USERNAME},

              PASSWORD = #{PASSWORD},

              NICKNAME = #{NICKNAME},

              AVATAR = #{AVATAR},

              MOBILE = #{MOBILE},

              PROFESSION = #{PROFESSION},

              DEFAULT_AREA = #{DEFAULT_AREA},

              DEFAULT_ADDRESS = #{DEFAULT_ADDRESS},

              REALNAME = #{REALNAME},

              ID_CARD = #{ID_CARD},

              BANK_CARD = #{BANK_CARD},

              STATUS = #{STATUS},

              WECHAT_ID = #{WECHAT_ID},

              QQ_ID = #{QQ_ID},

              WEIBO_ID = #{WEIBO_ID},

           ID = ID

           where

              ID = #{ID}

    </update>

</mapper>

 

 

 

附录4:

文件:Bumofang/.../ResponseMessageEnum.java

package com.fh.common.model;

import ...

public enum ResponseMessageEnum {

    public String appendMapToString(Map<String, Object> appendMap) {

       Map rsMap = new HashMap();

       rsMap.put("data", appendMap);

       rsMap.put("code", code);

       rsMap.put("msg", this.message);

       JSONObject jsonNode = JSONObject.fromObject(rsMap); //将rsMap对象转化为JSON对象,并赋值给jsonNode

       return jsonNode.toString(); 

    }

}

转载于:https://www.cnblogs.com/wobuchifanqie/p/6607506.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,以下是用户昵称筛选测试用例的编写步骤: 1. 确定测试目标:测试用户昵称筛选功能是否正常。 2. 制定测试计划:确定测试时间、测试环境、测试人员、测试用例设计等。 3. 确定测试用例设计原则:根据测试目标和测试计划,确定测试用例设计原则,比如覆盖率原则、等价类原则等。 4. 确定测试用例种类:根据测试目标和测试用例设计原则,确定测试用例种类,包括功能测试用例、性能测试用例、安全测试用例等。 5. 编写测试用例:根据测试用例设计原则和测试用例种类,编写测试用例,其中要注意测试用例的可重复性、可扩展性、可维护性等。例如: - 输入一个存在的用户昵称,验证是否能够正确筛选出该用户的信息。 - 输入一个不存在的用户昵称,验证是否能够正确提示“未找到该用户”的信息。 - 输入一个包含特殊字符的用户昵称,验证是否能够正确处理该用户昵称。 - 输入一个过长的用户昵称,验证是否能够正确处理该用户昵称。 6. 执行测试用例:根据测试计划执行测试用例,记录测试结果。 7. 分析测试结果:分析测试结果,发现问题、定位问题并跟踪问题,对问题进行分类和归纳总结。 8. 提出测试报告:根据测试结果和问题分类、归纳总结,提出测试报告,包括测试结果分析、问题描述、问题解决方案等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值