目的:接口返回需要带请求校验参数(可能是时间戳之类的)。直接mock 返回会有问题,此时就需要通过脚本进行动态mock。
代码如下:
static function readFile(filename) {
var fos = new ActiveXObject( "ADODB.Stream");
fos.Charset = "UTF-8";
fos.Open;
fos.LoadFromFile(filename);
var s = "";
s = fos.ReadText();
fos.close;
return s;
}
static function readFile(filename) {
var fso = new ActiveXObject( "Scripting.FileSystemObject");
var f = fso.OpenTextFile(filename, 1);
var s = "";
while(!f.AtEndOfStream)
s += f.ReadLine();
f.Close();
return s;
}
static function OnBeforeResponse(oSession: Session) {
if (m_Hide304s && oSession.responseCode == 304) {
oSession["ui-hide"] = "true";
}
if(oSession.hostname == "xxx.xxx.com" && oSession.url.indexOf("xxxxx") > -1 ){
oSession["ui-color"]="red";
oSession.utilDecodeResponse();
var body = oSession.GetResponseBodyAsString();
var string = readFile("D:\\xxxx.txt");
var index = body.indexOf('(');
var b = body.slice(0, index);
body = b +string ;
oSession.utilSetResponseBody(body);
}
}
说明:
1、 Scripting.FileSystemObject 或 ADODB.Stream 都可以对文件进行处理,但是如果要处理UTF-8编码的,只能用ADODB.Strea
2、OnBeforeResponse 主要是在请求返回前的处理,代码实现的功能是截取接口原有响应的“(” 之前的字符串和文件的mock拼接输出成新的返回。
参考的链接:
1、http://codeplanet.me/archives/2014/08/read-utf-8-text-file-in-asp/