若是說是單純命名上面,是受一幅畫的影響,畫裏面的妹子叫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