Need help with yod-mock?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

qiu8310
125 Stars 19 Forks 47 Commits 2 Opened issues

Description

Powerful data generator tool.

Services available

!
?

Need anything else?

Contributors list

# 49,483
TypeScr...
CSS
vscode
wechat
44 commits

yod-mock

Join the chat at https://gitter.im/qiu8310/yod-mock NPM version Build Status Coverage Status Dependency Status

本项目主要用来在测试环境中生成测试数据用的,另外也可以在命令行上快速生成简单测试数据。

背景

  • 前端程序员会因为后端没有接口数据,开发某些功能可能就不太方便
  • 而后端程序员常会被前端程序员催促给接口,给数据,但你也还没开发完时会显得他们很烦人

此工具就是希望在前后端都没有数据的情况下生成大量随机的测试数据

Features:

  • 语法简洁,学习成本低,功能强大
  • 支持所有 JS 原生的函数
  • 支持所有 lodash 的函数
  • 支持自定义新的 type 和 modifier
  • 支持配置系统现有的数据(使用
    yod.config('system.xxx', ...)

在线体验本项目的功能

Install

CLI

npm install --global yod-mock
  • Using
    yod image
    to get a random image
  • Using
    yod image -c
    to get a random image and copy it to clipboard
  • Using
    yod image .repeat 10
    to get 10 random images

Node.js

npm install --save-dev yod-mock

Browser

bower install --save-dev yod-mock

Usage

DEMO:(Edit this demo online

/*

@Self: Current plain object @Parent: Parent plain object @Config: Config item

*/

// Define an User type yod.type('User', { firstName: '@First', // Get a random firstName lastName: '@Last', sex: '@Sex', fullName: '@Self.firstName @Self.lastName', // Join current object's firstName and lastName nickName: '@Nick', chineseName: '@ChineseName', age: '@Age(adult)', // Call @Age with a argument to100: '100 - @Self.age', // Execute javascript code telephone: '@Tel', avatar: '@Avatar', others: { words: 'Hello, my name is @Parent.fullName, you can call me @Parent.nickName.', bestFriends: '@Nick.repeat(2, 3).join(", ")', // Call native array's join function myFirstNameLength: '@Parent.firstName.length', // Call native string's length attribute favouriteLetter: '@([A, B, C]).sample' // Call lodash sample function } });

// Use User type to generate an object with ten users in it console.log(yod({ status: 'ok', list: '@User.repeat(10)' }));

// or Use User type to generate directly array // console.log(yod('@User.repeat(10)'));

Types

BASIC

LOCATION

MEDIA

MIXED

TEXT

USER

WEB

Modifiers

Support all function in lodash:

yod('@([1, 2, 3]).sample');   // equal to `_.sample([1, 2, 3])`
yod('@Int.repeat(10).uniq');  // equal to `_.uniq(yod('@Int.repeat(10)'))`

Support all function in native javascript:

yod('@([a, b, c]).join("-")'); // equal to `['a', 'b', 'c'].join('-')`
yod('@String.replace(a, b)');  // equal to `yod('@String').replace('a', 'b')`

BASIC

Reference

  • yod:本项目的核心引擎(我写的)。
  • mockjs:阿里出的,也不错,但学习成本较高,也不够强大。
  • chance:国外的一个 mock 库,代码很简洁,但不适合中国人用。
  • jsonfy:将任意的字符串解析成 JS 里的数据,类似于 JSON.parse,但语法要求没它那么严格(我写的)。
  • sscan:字符串分析器,很多复杂的解析用正则表达式是满足不了要求的,所以需要把字符串化分成字符来一个个解析(我写的)。
  • elegant.def:优雅的定义 JS 函数,很多情况下我们定义了函数要处理参数的各种情况,用了它处理函数参数就非常简单了(我写的)。

TODO

History

ChangeLog

License

Copyright (c) 2015 Zhonglei Qiu. Licensed under the MIT license.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.