在上一章的内容中,我简单介绍了整个微服务的各个子模块,还封装了一些工具类。

当然,若还没完成上次内容的也可以点击右侧的传送门------传送门

EngineApplication

在开发测试引擎模拟接口之前,还需要给xxx-engine创建一个SpringBoot的启动类。

@SpringBootApplication
@EnableTransactionManagement
@EnableFeignClients
@EnableDiscoveryClient
public class EngineApplication {
    public static void main(String[] args) {
        SpringApplication.run(EngineApplication.class,args);
    }
}

那么这里的几个接口需要有以下几个内容:

  • get提交
  • post提交
    • json格式
    • 表单格式
  • 需要以上模拟接口需要支持参数化和随机响应延迟

login

@RequestMapping("/api/v1/test/login_form")
    @ResponseBody
    public JsonData login(String mail, String pwd){
        if(mail.startsWith("a")){
            return JsonData.buildError("账号错误");
        }
        return JsonData.buildSuccess("mail=" + mail + "pwd=" + pwd);
    }

使用form表单形式提交,不可以使用json形式提交。

使用postman来测试,测试结果如下:

pay

 @PostMapping("/api/v1/test/pay_json")
    @ResponseBody
    public JsonData pay(@RequestBody Map<String,String> map) {

        String id = map.get("id");
        String amount = map.get("amount");
        return JsonData.buildSuccess("id="+id+",amount="+amount);
    }

这个方法使用的是post提交,且使用json形式进行提交。

继续使用postman进行测试,测试结果如下:

paySleep

这个方法会在上面pay方法上,增加随机睡眠时间的功能。

@PostMapping("/api/v1/test/pay_json_sleep")
    @ResponseBody
    public JsonData paySleep(@RequestBody Map<String,String> map) {

        try {
            int value = RandomUtil.randomInt(1000);
            TimeUnit.MICROSECONDS.sleep(value);
            String id = map.get("id");
            String amount = map.get("amount");
            return JsonData.buildSuccess("id="+id+",amount="+amount+",sleep="+value);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }

    }

还是使用postman进行测试,测试结果如下:

queryDetail

@GetMapping("/api/v1/test/query")
    @ResponseBody
    public JsonData queryDetail(Long id){
        return JsonData.buildSuccess("id="+id);
    }

这个方法使用的是get方式提交,并以form表单形式提交。

测试如下:

querySleep

@GetMapping("/api/v1/test/query_sleep")
    @ResponseBody
    public JsonData querySleep(Long id){
        try {
            int value = RandomUtil.randomInt(1000);
            TimeUnit.MICROSECONDS.sleep(value);
            return JsonData.buildSuccess("id="+id+",sleep="+value);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }

    }

这个方法是从以上方法添加了随机睡眠时间的功能

测试如下:

queryError

@GetMapping("/api/v1/test/query_error_code")
    @ResponseBody
    public JsonData queryError(Long id,  HttpServletResponse response){

        if(id % 3 == 0){
            response.setStatus(500);
        }
        return JsonData.buildSuccess("id="+id);
    }
id取模3是0后则http状态码500

测试如下:

以上均为本册测试引擎模拟接口实战

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐