yapi/_site/documents/adv_mock.html
2018-03-29 15:16:40 +08:00

104 lines
14 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html><head><meta charSet="UTF-8"/><meta content="text/html; charset=utf-8" http-equiv="Content-Type"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black"/><link rel="apple-touch-icon" sizes="180x180" href="../ydoc/images/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="../ydoc/images/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="../ydoc/images/favicon-16x16.png"/><link rel="manifest" href="../ydoc/images/manifest.json"/><link rel="mask-icon" href="../ydoc/images/safari-pinned-tab.svg&quot;" color="#5bbad5"/><meta name="theme-color" content="#ffffff"/><meta http-equiv="Cache-Control" content="no-transform"/><meta http-equiv="Cache-Control" content="no-siteapp"/><title>高级Mock-教程</title><link rel="stylesheet" href="../ydoc/styles/style.css"/><meta name="author" content="ymfe"/><meta name="keywords" content="api管理,接口管理,接口文档,api文档"/><meta name="description" content="YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 APIYApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理"/><meta id="releativePath" content=".."/><link rel="stylesheet" href="../ydoc/ydoc-plugin-search/search.css"/></head><body><div class="g-doc"><div class="m-summary" id="js-menu"><div class="m-summary-content" id="js-menu-content"><div class="m-summary-block"><div class="m-summary-title">快速上手</div><ul class="m-summary-list indent"><li class="item"><a href="index.html" class="href">认识YApi</a></li><li class="item"><a href="quickstart.html" class="href">创建第一个API</a></li></ul></div><div class="m-summary-block"><div class="m-summary-title">进阶篇</div><ul class="m-summary-list indent"><li class="item"><a href="manage.html" class="href">权限</a></li><li class="item"><a href="project.html" class="href">项目操作</a></li><li class="item"><a href="api.html" class="href">接口操作</a></li><li class="item"><a href="mock.html" class="href">数据Mock</a></li><li class="item"><a href="" class="href">高级Mock</a></li><li class="item"><a href="case.html" class="href">自动化测试</a></li><li class="item"><a href="data.html" class="href">数据导入</a></li></ul></div><div class="m-summary-block"><div class="m-summary-title">自定义</div><ul class="m-summary-list indent"><li class="item"><div class="m-summary-block"><a href="plugin-index.html" class="href">插件</a><ul class="m-summary-list indent"><li class="item"><a href="plugin-dev.html" class="href">插件开发</a></li><li class="item"><a href="plugin-list.html" class="href">插件列表</a></li><li class="item"><a href="plugin-hooks.html" class="href">钩子</a></li></ul></div></li><li class="item"><a href="redev.html" class="href">二次开发</a></li></ul></div><div class="m-summary-block"><ul class="m-summary-list"><li class="item"><a href="qa.html" class="href">常见问题解答</a></li><li class="item"><a href="https://github.com/YMFE/yapi/blob/master/CHANGELOG.md" class="href">版本记录</a></li></ul></div></div><div class="m-summary-switch" id="js-summary-switch"><svg viewBox="0 0 926.23699 573.74994" version="1.1" x="0px" y="0px" width="15" height="15" class="bottom"><g transform="translate(904.92214,-879.1482)"><path d=" m -673.67664,1221.6502 -231.2455,-231.24803 55.6165, -55.627 c 30.5891,-30.59485 56.1806,-55.627 56.8701,-55.627 0.6894, 0 79.8637,78.60862 175.9427,174.68583 l 174.6892,174.6858 174.6892, -174.6858 c 96.079,-96.07721 175.253196,-174.68583 175.942696, -174.68583 0.6895,0 26.281,25.03215 56.8701, 55.627 l 55.6165,55.627 -231.245496,231.24803 c -127.185,127.1864 -231.5279,231.248 -231.873,231.248 -0.3451,0 -104.688, -104.0616 -231.873,-231.248 z " fill="#fff"></path></g></svg><svg viewBox="0 0 926.23699 573.74994" version="1.1" x="0px" y="0px" width="15" height="15" class="top"><g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="aaa" fill="#fff" fill-rule="nonzero"><path d="M231.2455,342.502 L0,111.25397 L55.6165,55.62697 C86.2056,25.03212 111.7971,-2.99999998e-05 112.4866,-2.99999998e-05 C113.176,-2.99999998e-05 192.3503,78.60859 288.4293,174.6858 L463.1185,349.3716 L637.8077,174.6858 C733.8867,78.60859 813.060896,-2.99999997e-05 813.750396,-2.99999997e-05 C814.439896,-2.99999997e-05 840.031396,25.03212 870.620496,55.62697 L926.236996,111.25397 L694.9915,342.502 C567.8065,469.6884 463.4636,573.75 463.1185,573.75 C462.7734,573.75 358.4305,469.6884 231.2455,342.502 Z" id="Shape" transform="translate(463.118498, 286.874985) scale(1, -1) translate(-463.118498, -286.874985) "></path></g></g></svg></div></div><div class="m-main" id="js-panel"><header class="m-header" id="js-header"><div class="m-header-title js-logo"><a href="../index.html" target="_self"><img class="logo" src="images/logo_header@2x.png"/><h6 class="name">YApi</h6></a></div><div><div class="m-search">
<div class="icon">&#xf0fd;</div>
<input type="text" class="input js-input" placeholder="搜索文档内容" />
<div class="m-search-result js-search-result"></div>
</div></div><nav class="m-header-nav js-nav"><ul class="m-header-items"><li class="item active"><a class="href" href="index.html">教程</a></li><li class="item "><a class="href" href="../devops/index.html">内网部署</a></li></ul></nav><div id="js-nav-btn" class="m-header-btn ui-font-ydoc"></div></header><div class="m-content"><div id="markdown-body" class="m-content-container markdown-body"><h1>&#x9AD8;&#x7EA7;Mock</h1>
<p>&#x9AD8;&#x7EA7; Mock &#x5206;&#x4E3A;<code>Mock &#x671F;&#x671B;</code>&#x548C;<code>&#x81EA;&#x5B9A;&#x4E49; Mock &#x811A;&#x672C;</code>&#x4E24;&#x79CD;&#x65B9;&#x5F0F;&#x3002;</p>
<h2 id="mock-&#x671F;&#x671B;">Mock &#x671F;&#x671B;</h2>
<p>&#x5728;&#x6D4B;&#x8BD5;&#x65F6;&#xFF0C;&#x5F88;&#x591A;&#x65F6;&#x5019;&#x9700;&#x8981;&#x6839;&#x636E;&#x4E0D;&#x540C;&#x7684;&#x8BF7;&#x6C42;&#x53C2;&#x6570;&#x3001;IP &#x8FD4;&#x56DE;&#x4E0D;&#x540C;&#x7684; HTTP Code&#x3001;HTTP &#x5934;&#x548C; JSON &#x6570;&#x636E;&#x3002;</p>
<p>Mock &#x671F;&#x671B;&#x5C31;&#x662F;&#x6839;&#x636E;&#x8BBE;&#x7F6E;&#x7684;&#x8BF7;&#x6C42;&#x8FC7;&#x6EE4;&#x89C4;&#x5219;&#xFF0C;&#x8FD4;&#x56DE;&#x671F;&#x671B;&#x6570;&#x636E;&#x3002;</p>
<h3 id="mock-&#x671F;&#x671B;-&#x4F7F;&#x7528;&#x65B9;&#x6CD5;">&#x4F7F;&#x7528;&#x65B9;&#x6CD5;</h3>
<ol>
<li>&#x8FDB;&#x5165;&#x63A5;&#x53E3;&#x8BE6;&#x60C5;&#x9875;&#xFF0C;&#x70B9;&#x51FB;&#x300E;&#x9AD8;&#x7EA7; Mock&#x300F;&#x9009;&#x9879;&#x3002;</li>
</ol>
<div class="doc-img-wrapper"><img class="doc-img-r" src="./images/usage/adv-mock-case1.png"></div>
2. &#x70B9;&#x51FB;&#x300E;&#x6DFB;&#x52A0;&#x671F;&#x671B;&#x300F;&#xFF0C;&#x586B;&#x5199;&#x8FC7;&#x6EE4;&#x89C4;&#x5219;&#x4EE5;&#x53CA;&#x671F;&#x671B;&#x8FD4;&#x56DE;&#x6570;&#x636E;&#xFF0C;&#x70B9;&#x51FB;&#x300E;&#x786E;&#x5B9A;&#x300F;&#x4FDD;&#x5B58;&#x3002;
<div class="doc-img-wrapper"><img class="doc-img-r" src="./images/usage/adv-mock-case3.png"></div>
<div class="doc-img-wrapper"><img class="doc-img-r" src="./images/usage/adv-mock-case4.png"></div>
3. &#x7136;&#x540E;&#x5C1D;&#x8BD5;&#x5728;&#x6D4F;&#x89C8;&#x5668;&#x91CC;&#x53D1;&#x9001;&#x7B26;&#x5408;&#x89C4;&#x5219;&#x7684;&#x8BF7;&#x6C42;&#xFF0C;&#x67E5;&#x770B;&#x8FD4;&#x56DE;&#x7684;&#x6570;&#x636E;&#x662F;&#x5426;&#x7B26;&#x5408;&#x671F;&#x671B;&#x3002;
<div class="doc-img-wrapper"><img class="doc-img-r" src="./images/usage/adv-mock-case5.png"></div>
<h3 id="mock-&#x671F;&#x671B;-&#x671F;&#x671B;&#x586B;&#x5199;">&#x671F;&#x671B;&#x586B;&#x5199;</h3>
<p>&#x57FA;&#x672C;&#x4FE1;&#x606F;</p>
<ul>
<li>&#x671F;&#x671B;&#x540D;&#x79F0;&#xFF1A;&#x7ED9;&#x6B64;&#x6761;&#x671F;&#x671B;&#x547D;&#x540D;</li>
<li>IP &#x8FC7;&#x6EE4;&#xFF1A;&#x8BF7;&#x6C42;&#x7684; IP &#x662F;&#x8BBE;&#x7F6E;&#x7684;&#x5730;&#x5740;&#x624D;&#x53EF;&#x80FD;&#x8FD4;&#x56DE;&#x671F;&#x671B;&#x3002;&#x9ED8;&#x8BA4; IP &#x8FC7;&#x6EE4;&#x5173;&#x95ED;&#xFF0C;&#x4EFB;&#x4F55; IP &#x5730;&#x5740;&#x90FD;&#x53EF;&#x80FD;&#x8FD4;&#x56DE;&#x671F;&#x671B;&#x3002;</li>
<li>&#x53C2;&#x6570;&#x8FC7;&#x6EE4;&#xFF1A;&#x8BF7;&#x6C42;&#x5FC5;&#x987B;&#x5305;&#x542B;&#x8BBE;&#x7F6E;&#x7684;&#x53C2;&#x6570;&#xFF0C;&#x5E76;&#x4E14;&#x503C;&#x76F8;&#x7B49;&#x624D;&#x53EF;&#x80FD;&#x8FD4;&#x56DE;&#x671F;&#x671B;&#x3002;&#x53C2;&#x6570;&#x53EF;&#x4EE5;&#x5728; Body &#x6216; Query &#x4E2D;&#x3002;</li>
</ul>
<p>&#x54CD;&#x5E94;</p>
<ul>
<li>HTTP Code&#xFF1A;&#x671F;&#x671B;&#x54CD;&#x5E94;&#x7684; HTTP &#x72B6;&#x6001;&#x7801;</li>
<li>&#x5EF6;&#x65F6;&#xFF1A;&#x671F;&#x671B;&#x54CD;&#x5E94;&#x7684;&#x5EF6;&#x8FDF;&#x65F6;&#x95F4;</li>
<li>HTTP &#x5934;&#xFF1A;&#x671F;&#x671B;&#x54CD;&#x5E94;&#x5E26;&#x6709;&#x7684; HTTP &#x5934;</li>
<li>&#x8FD4;&#x56DE; JSON&#xFF1A;&#x671F;&#x671B;&#x8FD4;&#x56DE;&#x7684; JSON &#x6570;&#x636E;</li>
</ul>
<h2 id="&#x81EA;&#x5B9A;&#x4E49;-mock-&#x811A;&#x672C;">&#x81EA;&#x5B9A;&#x4E49; Mock &#x811A;&#x672C;</h2>
<p>&#x5728;&#x524D;&#x7AEF;&#x5F00;&#x53D1;&#x9636;&#x6BB5;&#xFF0C;&#x5BF9;&#x4E8E;&#x67D0;&#x4E9B;&#x63A5;&#x53E3;&#xFF0C;&#x4E1A;&#x52A1;&#x76F8;&#x5BF9;&#x590D;&#x6742;&#xFF0C;&#x800C; UI &#x7AEF;&#x4E5F;&#x9700;&#x8981;&#x6839;&#x636E;&#x63A5;&#x53E3;&#x8FD4;&#x56DE;&#x7684;&#x4E0D;&#x540C;&#x5185;&#x5BB9;&#x53BB;&#x505A;&#x76F8;&#x5E94;&#x7684;&#x5904;&#x7406;&#x3002;</p>
<p>YApi &#x63D0;&#x4F9B;&#x4E86;&#x5199; JS &#x811A;&#x672C;&#x65B9;&#x5F0F;&#x5904;&#x7406;&#x8FD9;&#x4E00;&#x95EE;&#x9898;&#xFF0C;&#x53EF;&#x4EE5;&#x6839;&#x636E;&#x7528;&#x6237;&#x8BF7;&#x6C42;&#x7684;&#x53C2;&#x6570;&#x4FEE;&#x6539;&#x8FD4;&#x56DE;&#x5185;&#x5BB9;&#x3002;</p>
<h3 id="&#x81EA;&#x5B9A;&#x4E49;-mock-&#x811A;&#x672C;-&#x5168;&#x5C40;&#x53D8;&#x91CF;">&#x5168;&#x5C40;&#x53D8;&#x91CF;</h3>
<p>&#x8BF7;&#x6C42;</p>
<ul>
<li><code>header</code> &#x8BF7;&#x6C42;&#x7684; HTTP &#x5934;</li>
<li><code>params</code> &#x8BF7;&#x6C42;&#x53C2;&#x6570;&#xFF0C;&#x5305;&#x62EC; Body&#x3001;Query &#x4E2D;&#x6240;&#x6709;&#x53C2;&#x6570;</li>
<li><code>cookie</code> &#x8BF7;&#x6C42;&#x5E26;&#x7684; Cookies</li>
</ul>
<p>&#x54CD;&#x5E94;</p>
<ul>
<li>
<p><code>mockJson</code>
&#x63A5;&#x53E3;&#x5B9A;&#x4E49;&#x7684;&#x54CD;&#x5E94;&#x6570;&#x636E; Mock &#x6A21;&#x677F;</p>
</li>
<li>
<p><code>resHeader</code>
&#x54CD;&#x5E94;&#x7684; HTTP &#x5934;</p>
</li>
<li>
<p><code>httpCode</code>
&#x54CD;&#x5E94;&#x7684; HTTP &#x72B6;&#x6001;&#x7801;</p>
</li>
<li>
<p><code>delay</code>
Mock &#x54CD;&#x5E94;&#x5EF6;&#x65F6;&#xFF0C;&#x5355;&#x4F4D;&#x4E3A; ms</p>
</li>
<li>
<p><code>Random</code>
Mock.Random &#x65B9;&#x6CD5;&#xFF0C;&#x8BE6;&#x7EC6;&#x4F7F;&#x7528;&#x65B9;&#x6CD5;&#x8BF7;&#x67E5;&#x770B; <a href="https://github.com/nuysoft/Mock/wiki/Mock.Random">Wiki</a></p>
</li>
</ul>
<h3 id="&#x81EA;&#x5B9A;&#x4E49;-mock-&#x811A;&#x672C;-&#x4F7F;&#x7528;&#x65B9;&#x6CD5;">&#x4F7F;&#x7528;&#x65B9;&#x6CD5;</h3>
<ol>
<li>&#x9996;&#x5148;&#x5F00;&#x542F;&#x6B64;&#x529F;&#x80FD;</li>
<li>Mock &#x811A;&#x672C;&#x5C31;&#x662F;&#x7528; JavaScript &#x5BF9; <code>mockJson</code> &#x53D8;&#x91CF;&#x4FEE;&#x6539;,&#x8BF7;&#x907F;&#x514D;&#x88AB;&#x5168;&#x5C40;&#x53D8;&#x91CF;(httpCode, resHeader, delay)&#x7684;&#x4FEE;&#x6539;</li>
</ol>
<h3 id="&#x81EA;&#x5B9A;&#x4E49;-mock-&#x811A;&#x672C;-&#x793A;&#x4F8B;1,-&#x6839;&#x636E;&#x8BF7;&#x6C42;&#x53C2;&#x6570;&#x91CD;&#x5199;-mockjson">&#x793A;&#x4F8B;1, &#x6839;&#x636E;&#x8BF7;&#x6C42;&#x53C2;&#x6570;&#x91CD;&#x5199; mockJson</h3>
<pre><code>if(params.type == 1){
mockJson.errcode = 400;
mockJson.errmsg = &apos;error;
}
if(header.token == &apos;t&apos;){
mockJson.errcode = 300;
mockJson.errmsg = &apos;error;
}
if(cookie.type == &apos;a&apos;){
mockJson.errcode = 500;
mockJson.errmsg = &apos;error;
}
</code></pre>
<h3 id="&#x81EA;&#x5B9A;&#x4E49;-mock-&#x811A;&#x672C;-&#x793A;&#x4F8B;2,-&#x751F;&#x6210;&#x9AD8;&#x5EA6;&#x81EA;&#x5B9A;&#x4E49;&#x6570;&#x636E;&#x5185;&#x5BB9;">&#x793A;&#x4F8B;2, &#x751F;&#x6210;&#x9AD8;&#x5EA6;&#x81EA;&#x5B9A;&#x4E49;&#x6570;&#x636E;&#x5185;&#x5BB9;</h3>
<pre><code>var a = [1,1,1,1,1,1,1,1,1,1]
mockJson = {
errcode: 0,
email: Random.email(&apos;qq.com&apos;),
data: a.map(function(item){
return Random.city() + &apos;&#x94F6;&#x884C;&apos;
})
}
</code></pre>
<h2 id="mock-&#x4F18;&#x5148;&#x7EA7;&#x8BF4;&#x660E;">Mock &#x4F18;&#x5148;&#x7EA7;&#x8BF4;&#x660E;</h2>
<p>&#x8BF7;&#x6C42; Mock &#x6570;&#x636E;&#x65F6;&#xFF0C;&#x89C4;&#x5219;&#x5339;&#x914D;&#x4F18;&#x5148;&#x7EA7;&#xFF1A;Mock &#x671F;&#x671B; &gt; &#x81EA;&#x5B9A;&#x4E49; Mock &#x811A;&#x672C; &gt; &#x666E;&#x901A; Mock&#x3002;</p>
<p>&#x5982;&#x679C;&#x524D;&#x9762;&#x5339;&#x914D;&#x5230; Mock &#x6570;&#x636E;&#xFF0C;&#x540E;&#x9762; Mock &#x5219;&#x4E0D;&#x8FD4;&#x56DE;&#x3002;</p>
</div><div class="m-content-container m-paging"><div class="m-paging-prev m-paging-item"><a href="mock.html" class="href"><span class="ui-font-ydoc"></span>数据Mock</a></div><div class="m-paging-next m-paging-item"><a href="case.html" class="href">自动化测试<span class="ui-font-ydoc"></span></a></div></div></div></div></div><script src="../ydoc/scripts/plugins/dollar.min.js"></script><script src="../ydoc/scripts/plugins/responsive-nav.min.js"></script><script src="../ydoc/scripts/plugins/slideout.min.js"></script><script src="../ydoc/scripts/app.js"></script><script src="../ydoc/ydoc-plugin-search/core.js"></script><script src="../ydoc/ydoc-plugin-search/search.js"></script><script src="../search_json.js"></script></body></html>