【问题标题】:TestUtils.Simulate.change doesn't update value of inputTestUtils.Simulate.change 不更新输入值
【发布时间】:2016-09-13 15:36:03
【问题描述】:

我制作了一个非常简单的组件来测试 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'}});什么都不做

【问题讨论】:

    标签: unit-testing input reactjs reactjs-testutils


    【解决方案1】:

    我认为主要问题是你比较

    input.getAttribute('value')
    

    其中只包含原始值。您必须检查更新的值,例如:

    expect(input.value).toEqual('giraffe');
    

    我在 jsfiddle Click 上设置了一个有效的 jasmine 测试

    【讨论】:

      猜你喜欢
      • 2017-09-11
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 2023-01-08
      • 1970-01-01
      • 2021-07-31
      相关资源
      最近更新 更多