- 测试 Reducers
测试 Reducers
幸运的是,测试reducers很像测试我们的同步 action 创建者,因为所有reducer操作是同步的,这使我们的全局状态容易跟踪,同时也是为什么Redux的拥有众多粉丝的原因。
我们将在 angular2-redux-starter 中测试减速器:
export default function counter(state = 0, action)switch (action.type) {case INCREMENT_COUNTER:return state + 1;case DECREMENT_COUNTER:return state - 1;default:return state;}}
正如你可以看到,有三种情况要测试:默认情况,增量和减量。我们想测试我们的 actions 触发的 reducer 状态变化符合预期。
import { INCREMENT_COUNTER, DECREMENT_COUNTER } from '../actions/counter';import counter from './counter';describe('counter reducers', () => {it('should handle initial state', () => {expect(counter(undefined, {})).toEqual(0)});it('should handle INCREMENT_COUNTER', () => {expect(counter(0, {type: INCREMENT_COUNTER})).toEqual(1)});it('should handle DECREMENT_COUNTER', () => {expect(counter(1, {type: DECREMENT_COUNTER})).toEqual(0)});});
注意,我们只是测试Redux状态的一部分,减速器负责Counter,而不是整体。从这些测试中我们可以看出,Redux主要基于纯函数。
