urlmock
Easy load mock data from a specify url.
Features
- Simple url and mock file mapping rules.
- Support
*.js
,*.json
and common datas.
Installation
$ npm install urlmock
URL Mapping Rules
Use ?__scene[={scene}]
to select mock scene, default scene is default
.
Rules
{url}?__scene={scene} => {datadir}{url}/{scene}.js
Examples
{datadir}
equal/foobar/test/mocks
There are some mapping rules:
/?__scene
(meaning/?__scene=default
) =>/foobar/test/mocks/default.js
/users?__scene=other
=>/foobar/test/mocks/users/other.js
/users/?__scene=second
=>/foobar/test/mocks/users/second.js
/users/123.html?__scene
=>/foobar/test/mocks/users/123.html/default.js
/users/123.json?__scene
=>/foobar/test/mocks/users/123.json/default.js
/users/123.json?__scene=one
=>/foobar/test/mocks/users/123.json/one.js
/users/123?__scene=one
=>/foobar/test/mocks/users/123/one.js
So we will see total structure on /foobar/test/mocks
like this:
- / (
GET /
)- default.js
- users/ (
GET /users
)- default.js
- other.js
- second.js
- 123.html/ (
GET /users/123.html
)- default.js
- 123.json/ (
GET /users/123.json
)- default.js
- one.js
- 123/ (
GET /users/123
)- default.js
- one.js
- common.js
Mock file format
*.js
: normal js file
../common/user.js
moduleexports = name: 'mock-name' age:100 isAdmin: false logined: false homepage: 'http://ooxx.com/fengmk2' // .. other common user properties;
../common/admin.js
moduleexports = isAdmin: true logined: true;
./logined_user.js
moduleexports = logined: true;
logined_admin.js
moduleexports = name: 'fengmk2' age: 18 // require common data __requires: '../common/user' './logined_user' '../common/admin';
Merge sequence:
Output <== ../common/user
<== ./logined_user
<== ../common/admin
So logined_admin.js
will merge all data:
name: 'fengmk2' age: 18 isAdmin: true logined: true homepage: 'http://ooxx.com/fengmk2' // .. other common user properties
*.json
: readonly json file
foo.json
:
Quick start
var urlmock = ; var data = ;console;// { name: 'fengmk2', age: 18 }
__name
for scene name
use Default scene name is file name
.
We can add __name
special property on mock data to set the scene name.
default.js
will show scene name is normal user (default.js)
moduleexports = name: 'jack' __name: 'normal user';
ma.js
will show scene name is 马 yun yun (ma.js)
moduleexports = name: 'jack ma' __name: '马 yun yun' __requires: './default';
API Reference
#urlmock(datadir, url)
Get the url mapping mock data.
- datadir: store mock data directory path
- url: current request url
var data = ;console;// { name: 'fengmk2', age: 18 }
#urlmock(datadir, ctx)
Get the url mapping mock data.
- datadir: store mock data directory path
- ctx: koa context instance
var data = ;console;// { name: 'fengmk2', age: 18 }
License
MIT