unit testing - unitarias - ¿Cómo hacer una prueba unitaria de un método de reacción del componente?
pruebas unitarias java (3)
Estoy tratando de hacer una prueba unitaria de mi componente reactjs:
import React from ''react'';
import Modal from ''react-modal'';
import store from ''../../../store''
import lodash from ''lodash''
export class AddToOrder extends React.Component {
constructor(props) {
super(props);
this.state = {checked: false}
//debugger
}
checkBoxChecked() {
return true
}
render() {
console.log(''testing=this.props.id'',this.props.id )
return (
<div className="order">
<label>
<input
id={this.props.parent}
checked={this.checkBoxChecked()}
onChange={this.addToOrder.bind(this, this.props)}
type="checkbox"/>
Add to order
</label>
</div>
)
}
}
export default AddToOrder;
Para empezar, ya estoy luchando para afirmar el método checkBoxChecked:
import React from ''react-native'';
import {shallow} from ''enzyme'';
import {AddToOrder} from ''../app/components/buttons/addtoorder/addtoorder'';
import {expect} from ''chai'';
import {mount} from ''enzyme'';
import jsdom from ''jsdom'';
const doc = jsdom.jsdom(''<!doctype html><html><body></body></html>'')
global.document = doc
global.window = doc.defaultView
let props;
beforeEach(() => {
props = {
cart: {
items: [{
id: 100,
price: 2000,
name:''Docs''
}]
}
};
});
describe(''AddToOrder component'', () => {
it(''should be handling checkboxChecked'', () => {
const wrapper = shallow(<AddToOrder {...props.cart} />);
expect(wrapper.checkBoxChecked()).equals(true); //error appears here
});
});
`` `
¿Cómo puedo hacer una prueba unitaria del método en el componente? Este es el error que estoy recibiendo:
TypeError: Cannot read property ''checked'' of undefined
Ampliación de la respuesta anterior. Si tiene un componente conectado (Redux), pruebe el siguiente código:
const store=configureStore();
const context = { store };
const wrapper = shallow(
<MyComponent,
{ context },
);
const inst = wrapper.dive().instance();
inst.myCustomMethod(''hello'');
Para aquellos que encuentren que la respuesta aceptada no funciona, intente usar .dive()
en su envoltura superficial antes de usar .instance()
:
expect(wrapper.dive().instance().somePrivateMethod()).toEqual(true);
Referencia: Métodos de prueba de componentes con enzima.
Ya casi has llegado. Solo cambia tu expectativa a esto:
expect(wrapper.instance().checkBoxChecked()).equals(true);
Puede ir a través de este enlace para obtener más información sobre los métodos de prueba de componentes utilizando enzimas.