我制作了一个非常简单的组件来测试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(输入,{target:{value:'giraffe'}});什么都不做
答案 0 :(得分:1)
我认为主要问题是你与
进行比较input.getAttribute('value')
仅包含原始值。您必须检查更新的值,如:
expect(input.value).toEqual('giraffe');
我在jsfiddle Click
上设置了一个工作茉莉花测试