如何用mvc做一个http模拟器

很多时候我们系统需要连一些第三方的api,有时候我们系统要根据api返回结果走不同的分支,这个时候如果需要测试覆盖所有分支,那么我们通常有三种做法。

1.纯人工,让第三方配合测试,覆盖所有分支,正常都会走一遍,但是做多了,对方烦了,他认为自己系统没问题,没义务配合你了。

2.程序内部增加内部测试代码,方法不访问api,而是直接返回测试要的输出值。这种方法缺点很明显,一是不能模拟http请求,二是不好维护。还有测试代码总不能提交到正式环境吧,即使是不会调用的代码。

3.自己搭建一个api服务器。只要修改程序访问的api地址,就可以测试了,方便,不破坏原程序。

综上,我们选择第三种方式。并使用.net的mvc来做这个模拟器。

既然要做http模拟器,那么一般思路就是,我们有n个请求地址,我们就写几个action还响应,但是这样我们以后要扩展还得该模拟器,这可不行。那么我们就只用1个action来响应所有的请求吧。

怎么用1个action响应所有请求呢,首先我第一个想到的是捕获404错误,然后重定向到action里面处理。

然后我配置了web.config的customErrors,但是这样的话重定向后,只能带上原地址,其他页面请求参数都没有,这个可不行。

如果不用配置,那我写Application_Error和HandleErrorAttribute应该可以捕获了吧,结果发现还是不行,调试时,404根本不进这两个方法。

看来靠捕获404,来重定向这个方案是行不通的。这个时候我想到了mvc不是可以自定义路由吗,我写个全匹配的路由规则不就可以了吗?试了下果然可以,代码如下:

 routes.MapRoute(
             name: "Default",
             url: "{*anything}",
             defaults: new { controller="Default",action="Index"}

剩下的工作无非是在action中写“接受请求参数->判断请求参数->根据请求读取不同的结果文件->将结果输出”的代码,简单易操作,就不详解了。

 

 

转载于:https://my.oschina.net/u/3069996/blog/793338

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值