【mock service系列】使用 Rosie mock JS數據

Rosie? factory_girl?

若是說是單純命名上面,是受一幅畫的影響,畫裏面的妹子叫Rosie;
若是是項目靈感實際上是來自於factory_girl,factory_girl在github以及segmentfault上的資料都有一些,百度也找獲得,可是關於Rosie的着實很少,因此就想share下。
圖片描述git

What

Rosie的做用主要就是構建一些js的數據對象,大部分使用場景也是在測試中。github

雖然這部分和mock service沒有直接的關係,可是由於在整個涉及到api的test過程當中(非單元測試),咱們的套路通常是用工具生成假的數據對象(結構和真實的一致),而後把數據傳給對應的mock service,因此暫時也把本文放在mock service 系列。npm

How

通常使用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工具

Why

爲何使用,本人是由於以前每次在before each 或者本身寫builder太麻煩了,最多見的是,在一個已有的obeject上面增長新的屬性,煩不勝煩。單元測試

When

當你厭倦已有的不管是字面量生成mock data,仍是單獨數據builder 生成mock data的方式。
感受用Rosie更符合語義以及函數思惟。測試

缺點

暫時沒發現,增長了新的依賴算嗎?ui

相關文章
相關標籤/搜索