Ich habe eine LoginInfo Komponente und unter dieser Komponente rufe ich eine weitere Kindkomponente auf. Ich versuche Einheitstest für die Komponenten zu schreiben, indem ich Test-, Enzym- und Reaktions-Tests verwende. teilweise habe ich die testfälle geschrieben aber nicht sicher wie ich test für untergeordnete komponente schreiben kann (LoginInfoEdit). Diese Linie kann ich nicht abdecken.Reactjs Komponententest
import React from 'react';
import { LoginInfoEdit } from './LoginInfoEdit'
class LoginInfo extends React.Component {
constructor(props) {
super(props)
this.state = {
isLoginInfo: false
}
}
openEdit() {
this.setState({ isLoginInfo: true })
}
closeEdit() {
this.setState({ isLoginInfo: false })
}
OpenEditForUpdate(e) {
e.preventDefault();
this.openEdit();
}
render() {
return (
<div>
<form>
<div>
some text
</div>
<LoginInfoEdit loginid={this.props.loginid} openloginedit={this.state.isLoginInfo} onClose={this.closeEdit.bind(this)}>
</LoginInfoEdit>
</form>
</div>
)
}
}
export default LoginInfo
Unit-Test ist Below --------
import React from 'react'
import { shallow } from 'enzyme';
import LoginInfo from './LoginInfo'
import LoginInfoEdit from './LoginInfoEdit'
const props = {
loginid: "1",
openloginedit: false,
};
describe('LoginInfo component',() => {
let LoginInfo = null;
let editButton = null;
beforeEach(() => {
LoginInfo = shallow(<LoginInfo {...props}/>);
editButton = LoginInfo.find('button[name="edit"]')
})
it('checks everything set properly',() => {
editButton.simulate('click', { preventDefault:() => { } });
expect(LoginInfo.state('isloginedit')).toEqual(true)
})
it('renders child',() => {
expect(LoginInfo.find('LoginInfoEdit').length).toEqual(1)
});
it('passes proper props to the child',() => {
const expected = {
loginid: "1",
openloginedit: false,
onClose: LoginInfo.instance().closeEdit.bind(this),
};
expect(LoginInfo.find('LoginInfoEdit').props()).toEqual(expected)
})
})
Vielen Dank für Ihre Antwort bu t erhalten und erwartet ist anders erwartet Ich bekomme - "onClose": [Funktion closeEdit], und in erhalten bekomme ich - "onClose": [Funktion onClose], so ist es nicht machchniing. aufgrund dieses Tests – user2768132
von der Ausgabe fehlschlägt es scheint, als ob Sie verschiedene Funktionen oder anderen Namen der Funktion an das erwartete Objekt übergeben. – beniutek
Danke für Ihre Antwort. Aus der Ausgabe scheint es, aber ich gebe den gleichen Namen wie yo im Beispiel erwähnt..aber nach dem Error bekam ich es in onClose geändert: component.instance(). CloseEdit.bind (this). dann bekam ich "Unterschied: Vergleichswerte haben keinen visuellen Unterschied." Error. und Testfall schlägt fehl. nicht sicher, was das Problem ist. – user2768132