除了is办法以外,我们还会用到deepEqual和true办法。好,你如今已经完全会用AVA了。其他的功能我们完全不关怀。
- ava --update-snapshots
Redux测试 (Model测试)
- render(<Greeter name="React"/>, document.body)
Redux 就是用一堆Reducer函数来reduce所有事宜用来做全局Store的状况机( FSM )。用源码本身介绍它甚至比用上一小段文字介绍还快:
- const createStore = reducer => {
- let state, listeners = []
- const dispatch = action => {
- state = reducer(state, action)
- listeners.forEach(listeners => listeners())
- }
- return {
- getState() { return state },
- subscribe(listener) {
- listeners.push(listener)
- return () => { listeners = listeners.filter(l => l !== listener)}
- },
- dispatch,
- }
- }
reducer几乎包含了我们所有前端营业的核心,测好它就测了大年夜半。它们全都是 (State, Action) => nextState 情势的纯函数,无异步操作,用swtich case来模仿模式匹配来处理事宜。比如用喜闻乐见的简陋版的┞坊泊车场举例:
- export const parkingLot = (state = [], action) => {
- switch (action.type) {
- case 'parkingLot/PARK':
- return [action.car, ...state]
- case 'parkingLot/PICK':
- const [_, ...rest] = state
- return rest
- default: return state
- }
- }
Reducer是这么竽暌姑的:
- const store = createStore(parkingLot)
- store.subscribe(() => renderMyView(store.getState()))
- store.dispatch({ type: 'parkingLot/PARK' })
好,如今你又懂得了Redux。那我们可以看看怎么测试膳绫擎的parkingLot reducer了:
- test('parking lot', t => {
- const initial = parkingLot(undefined, {})
- t.deepEqual(initial, [], 'should be empty when init')
推荐阅读
如不雅说有什么好的博客文┞仿推荐,ibireme 的 iOS 保持界面流畅的技能 这篇堪称业界毒瘤,墙裂推荐反复浏览。这篇文┞仿中讲解了很多的优化点,我本身总结了下收益最大年夜的两个优化点>>>详细阅读
本文标题:React全家桶与前端单元测试艺术
地址:http://www.17bianji.com/lsqh/37291.html
1/2 1