Ich versuche, einen Test einer Wertänderung für meine InputText-Komponente zu simulieren. Ich weiß wirklich nicht, wie ich das machen soll. Ich weiß nur, dass ich die ref und die onChange Methode verwenden muss. Aber wenn ich eine Referenz auf meinen Test setzte, bekam ich einen Fehler wie "Sie könnten eine Referenz zu einer Komponente hinzufügen, die nicht innerhalb der Rendermethode einer Komponente erstellt wurde".ReactJS Änderungswert/Komponententest simulieren
Edit = ich ref geben in den Render meiner Input Komponente
Dies ist die Render meiner Input Komponente
render: function() {
console.log('passerender');
var attrs = this.generateAttributes();
var type = this.props.area ? "textarea" : "text";
return (
<Input
className={this.props.menuClassName}
type={type}
{...attrs}
{...this.props.evts}
className={this.props.menuClassName}
onChange = {this.handleChange}
onBlur = {this.handleBlur}
value={this.state.value}
ref = "InputField"
hasFeedback
/>
);
}
});
Dies ist meine Testseite meiner Input Komponente:
var React = require('react'),
InputText = require('../resources/assets/js/testcomponents/InputText.js').InputTextEditable,
TestUtils = require('react-addons-test-utils'),
ReactDOM = require('react-dom');
describe('InputText', function() {
var InputElement = TestUtils.renderIntoDocument(
<InputText
area={false}
//evts={{onChange: handleChange}}
attributes={{
label:'Test Input Isole',
name:'InputTextArea',
value: '',
wrapperClassName: 'col-md-4',
labelClassName: 'col-md-2',
groupClassName: 'row'
}}
//ref="InputField"
editable={true}/>);
var DomElement = ReactDOM.findDOMNode(InputElement);
var inputV = ReactDOM.findDOMNode(InputElement.refs.InputField);
var input = DomElement.getElementsByTagName('input')[0];
var inputspan = DomElement.getElementsByTagName('span')[1];
it('updates input value on key press', function() {
inputV.value = 'test';
expect(input.getAttribute('value')).toEqual('');
TestUtils.Simulate.change(inputV);
TestUtils.Simulate.keyDown(inputV, {key: "Entrer", keyCode: 13, which: 13});
expect(input.getAttribute('value')).toEqual('test');
});
Vielen Dank! Aber jetzt habe ich das auf meiner Konsole: Fehler: Syntaxfehler, unerkannter Ausdruck: nicht unterstützt Pseudo: ungültig – kMM
@kMM Versuchen Sie, {... yourProps} zu entfernen – wuct
Das gleiche Ergebnis, wenn ich Requisiten entfernen ... – kMM