踩坑篇之mockjs连接超时以及function参数中直接return的对象无法使用mock语法规范
最近在学习mockjs,mockjs算是比较简单的,但是对于我这样一个初次上手的人来说,还是遇到了一些麻烦,查阅了好多文章,发现都没有遇到和我有同样遭遇的伙伴,可能我还是太水了,才会遇到这么水的问题。
mock方法几个主要参数形式:
Mock.mock(template)
Mock.mock(rurl,function(option)||template)
Mock.mock(rurl,rtype,function(option) || template)
其实前两个形式,我没遇到什么问题,主要在第三个形式,其中rtype是填写请求类型的,文档写的 POST,GET等类型的,这就是坑我的地方,我按文档写入了大写的字符串,结果就响应超时,然而我并没有意识到是大小写的问题,翻了好多博客,都是写url匹配问题的,把rulr和fanction参数改了又改,还是没解决,最终静下心来,从参数少的形式一个一个调试,最终确定是rtype参数的大小写导致,这里只能用小写post,get等类型,现在想想真是被自己蠢哭了
另一个坑是在function(option) 中直接return一个数据对象无法使用mock语法规范
/*
错误写法 最终会直接原封不动的返回return中的对象{
'name': '@name',
'list|1-10':[{
'id|+1':0
}]
*/
Mock.mock(url, type, option => {
return {
'name': '@name',
'list|1-10':[{
'id|+1':0
}]
})
//使用Random不受影响,因为Mock.Random是全局的
Mock.mock(url, type, option => {
return {
'name': Mock.Random.name()
}
})
//函数里返回一个mock对象就可以正确使用mock语法
Mock.mock(url,type,option=>{
return Mock.mock({
'userName': '@name',
'list|1-10':[{
'id|+1':0
}]
})
}
//直接使用template形式也可以使用mock语法
Mock.mock(url, type, {
'name':"@name"
})