TestUtils.Simulate.change 不更新输入值
TestUtils.Simulate.change doesn't update value of input
我制作了一个非常简单的组件来测试 TestUtils.Simulate reactJS 方法。但是我不知道为什么这个方法没有更新我组件的值。我想我的代码写错了。
这是我的小组件:
'use strict';
var React = require('react');
var MyComponent = React.createClass({
getInitialState: function () {
return {value: 'a'};
},
handleChange: function (event) {
this.setState({value: event.target.value});
},
render: function () {
return (
<div>
<input
ref="inp"
type="text"
value={this.state.value}
onChange={this.handleChange}
/>
</div>
);
}
});
module.exports = MyComponent;
这是测试页:
jest.disableAutomock();
jest.unmock('../resources/assets/js/testcomponents/testvalue');
var React = require('react'),
MyComponent = require('../resources/assets/js/testcomponents/testvalue.js'),
TestUtils = require('react-addons-test-utils'),
ReactDOM = require('react-dom');
describe('MyComponent', function () {
var AppElement = TestUtils.renderIntoDocument(<MyComponent/>);
var DomElement = ReactDOM.findDOMNode(AppElement);
var input = DomElement.getElementsByTagName('input')[0];
console.log('INPUT 1 as string: ' + input.outerHTML);
it('type', function () {
console.log('type=' + input.getAttribute('type'));
expect(input.getAttribute('type')).toEqual('text');
});
it('value', function () {
console.log('value=' + input.getAttribute('value'));
expect(input.getAttribute('value')).toEqual('a');
});
it('change', function (){
TestUtils.Simulate.change(input, {target: {value: 'giraffe'}});
expect(input.getAttribute('value')).toEqual('giraffe');
});
});
行TestUtils.Simulate.change(input, {target: {value: 'giraffe'}});什么都不做
我认为主要问题是你比较
input.getAttribute('value')
其中仅包含原始值。您必须检查更新后的值,例如:
expect(input.value).toEqual('giraffe');
我在 jsfiddle 上设置了一个有效的 jasmine 测试 Click
我制作了一个非常简单的组件来测试 TestUtils.Simulate reactJS 方法。但是我不知道为什么这个方法没有更新我组件的值。我想我的代码写错了。
这是我的小组件:
'use strict';
var React = require('react');
var MyComponent = React.createClass({
getInitialState: function () {
return {value: 'a'};
},
handleChange: function (event) {
this.setState({value: event.target.value});
},
render: function () {
return (
<div>
<input
ref="inp"
type="text"
value={this.state.value}
onChange={this.handleChange}
/>
</div>
);
}
});
module.exports = MyComponent;
这是测试页:
jest.disableAutomock();
jest.unmock('../resources/assets/js/testcomponents/testvalue');
var React = require('react'),
MyComponent = require('../resources/assets/js/testcomponents/testvalue.js'),
TestUtils = require('react-addons-test-utils'),
ReactDOM = require('react-dom');
describe('MyComponent', function () {
var AppElement = TestUtils.renderIntoDocument(<MyComponent/>);
var DomElement = ReactDOM.findDOMNode(AppElement);
var input = DomElement.getElementsByTagName('input')[0];
console.log('INPUT 1 as string: ' + input.outerHTML);
it('type', function () {
console.log('type=' + input.getAttribute('type'));
expect(input.getAttribute('type')).toEqual('text');
});
it('value', function () {
console.log('value=' + input.getAttribute('value'));
expect(input.getAttribute('value')).toEqual('a');
});
it('change', function (){
TestUtils.Simulate.change(input, {target: {value: 'giraffe'}});
expect(input.getAttribute('value')).toEqual('giraffe');
});
});
行TestUtils.Simulate.change(input, {target: {value: 'giraffe'}});什么都不做
我认为主要问题是你比较
input.getAttribute('value')
其中仅包含原始值。您必须检查更新后的值,例如:
expect(input.value).toEqual('giraffe');
我在 jsfiddle 上设置了一个有效的 jasmine 测试 Click