solucionar - void(0) javascript href
Cobertura de sucursales para el reductor Redux (2)
Creo que lo que falta es que no tienes una prueba para la rama default
de la select
. Necesitas agregar
test(''returns correct state when action type is "Bar"'', () => {
expect(myReducer({foo: ''''}, {type: ''bar''})).toEqual({foo: ''''})
})
Digamos que tengo el siguiente reductor:
import {FOO} from ''../const/Foo''
const myReducer = (initialState = {foo: ''''}, action) => {
const state = {}
if (action) {
switch (action.type) {
case FOO:
state.foo = action.foo
};
}
return Object.assign({}, initialState, state)
}
y pruebo usando bromas con:
import FOO from ''../const/Foo''
test(''returns correct state when action is not "Foo"'', () => {
expect(myReducer({foo: ''bar''}, {type: ''foo''})).toEqual({foo: ''bar''})
})
test("returns correct state when action is ''Foo''", () => {
expect(myReducer({}, {type: FOO, foo: ''bar''})).toEqual({foo: ''bar''})
})
test(''when there is no action / testing the default'', () => {
expect(myReducer()).toEqual({foo: ''''})
})
Esto produce una cobertura de rama de 4/5
. Después de pensar un poco / eliminar y / o volver a agregar líneas llegué a la lógica de bifurcación en el conjunto initialState
. Lo cual casi tiene sentido. Excepto:
1) ¿Por qué la última prueba, con una llamada myReducer()
vacía, myReducer()
cubre este caso?
Cuando el reductor se reduce a:
const myReducer = (initialState = {foo: ''''}, action) => {
const state = {}
return Object.assign({}, initialState, state)
}
Las pruebas (que ahora fallan) tienen una cobertura de rama de 1/1.
¿Que esta pasando aqui?
EDITAR: según la solicitud, estoy agregando la configuración. Paso el siguiente jest.json para bromear:
{
"bail": true,
"verbose": true,
"moduleNameMapper": {
"//.(sass|jpg|png)$": "<rootDir>/src/main/js/config/emptyExport.js"
},
"testRegex": ".*(?<!snapshot)//.(test|spec)//.js$",
"collectCoverage": true,
"collectCoverageFrom": ["src/main/js/**/*.js"
, "!**/node_modules/**"
, "!**/*spec.js"
, "!src/main/js/config/emptyExport.js"
, "!**/coverage/**/*.js"
, "!src/main/js/app.js"
, "!src/main/js/store/configureStore.js"
, "!src/main/js/reducers/index.js"],
"coverageDirectory": "<rootDir>/src/main/js/coverage",
"coverageThreshold": {
"global": {
"branches": 85,
"function": 95,
"lines": 95,
"statements": 95
}
}
}
EDIT2: La siguiente prueba tampoco afecta la cobertura de la prueba:
test(''when there is no action / testing the default'', () => {
expect(addressReducer(undefined, {foo: ''bar''})).toEqual({address: ''''})
})
Aún no entiendo por qué la implementación de prueba predeterminada inicial no era equivalente desde una perspectiva de cobertura de rama.
la última prueba con myReducer()
cubre el caso donde se aplica el valor predeterminado para initialState
que está en su caso {foo: ''''}
.