假设我有一个reducer文件reducers / group1.js,就像这样
export default combineReducers({
A: combineReducers({ A1, A2 }),
B: reducerB,
C: reducerC
})
测试每个切片减速机(A1,A2,reducerB和reducerC)和测试组合切片之间有什么区别吗?
import group1 from 'reducers/group1'
describe('reducers', () => {
describe('group1', () => {
it('should provide the initial state', () => {
expect(group1(undefined, {})).to.equal({ group1: { A: { ... }, B: ... } })
})
it(...)
// ...
})
})
或
import { A1, A2, reducerB, reducerC } from 'reducers/group1'
describe('reducers', () => {
describe('group1', () => {
describe('A1', () => {
it('should provide the initial state', () => {
expect(A1(undefined, {})).to.equal(0) // if A1 is just a number
})
})
describe('A2', () => { ... })
describe('reducerB', () => { ... })
describe('reducerC', () => { ... })
})
})
答案 0 :(得分:1)
你的第二个例子通常更好,因为它允许更简单的单元测试。我可以想象一个开发人员可能想要为reducer C
编写一堆测试的情况,而不知道有关reducers A
和B
的任何信息。第二个代码示例允许该开发人员编写一套C
测试,而不关心A
或B
甚至是什么。如果减速器的行为发生剧烈变化,它还可以帮助重写测试:所有这些测试都存在于一个地方,而不是分散在测试文件中。
但是,在某些情况下,您可能希望为整个reducer编写测试。例如,如果您有全局重置操作,则需要测试整个reducer是否正确响应该操作,而不是为每个reducer编写单独的测试。大多数情况下,为个别减速器编写测试可能会更清晰。