若是说是单纯命名上面,是受一幅画的影响,画里面的妹子叫Rosie;
若是是项目灵感实际上是来自于factory_girl,factory_girl在github以及segmentfault上的资料都有一些,百度也找获得,可是关于Rosie的着实很少,因此就想share下。git
Rosie的做用主要就是构建一些js的数据对象,大部分使用场景也是在测试中。github
虽然这部分和mock service没有直接的关系,可是由于在整个涉及到api的test过程当中(非单元测试),咱们的套路通常是用工具生成假的数据对象(结构和真实的一致),而后把数据传给对应的mock service,因此暂时也把本文放在mock service 系列。npm
通常使用npm或者yarn 添加依赖并安装js包就可使用。segmentfault
具体使用时候,通常会有一个factory用来构建,另一个在须要数据的地方进行直接引入。好处是数据构建逻辑和业务处理的逻辑能够隔离。
在object builder 部分api
import { Factory } from 'rosie' export default new Factory() .sequence('id') .attr('Type', () => 'User') .attr('Name', {first: 'Yangyang', last:'Cao') .attr('Birthday':'1992-01-01') .attr('Job', {company:'TW',position:'Developer'})
在使用的部分函数
import ProfileFactory from './fixtures/profile' beforeEach(() => { parameters = { ID: '00124B00000zU5f17AE', Profile: ProfileFactory.build() } })
其余的使用方法也是存在的,具体请参考github工具
为何使用,本人是由于以前每次在before each 或者本身写builder太麻烦了,最多见的是,在一个已有的obeject上面增长新的属性,烦不胜烦。单元测试
当你厌倦已有的不管是字面量生成mock data,仍是单独数据builder 生成mock data的方式。
感受用Rosie更符合语义以及函数思惟。测试
暂时没发现,增长了新的依赖算吗?ui