我有很多组件在我的应用程序中响应不同的按键,到目前为止,我使用 TestUtils.Simulate.keyDown
的所有测试都没有起作用。看起来 keyDown
就是根本不工作。
这是我正在尝试测试的组件:
description.js
var React = require('react/addons');
var Description = React.createClass({
render : function () {
return (
<div className="description">
<input type="text" ref="input"/>
</div>
)
}
});
module.exports = Description;
这里有一个简单的测试不通过:
description-test.js
var React = require('react/addons');
var TestUtils = React.addons.TestUtils;
var expect = require('expect');
var Description = require('../description');
describe('Description', function () {
it('updates input value on key press', function () {
var description = TestUtils.renderIntoDocument(<Description/>);
var input = React.findDOMNode(description.refs.input);
expect(input.value).toEqual(''); //This passes
TestUtils.Simulate.keyDown(input, {key : "a"});
expect(input.value).toEqual('a'); //This fails
});
});
我有多个测试依赖于
TestUtils.Simulate.keyDown
。这些测试尝试按下多种不同的键(其中 Enter 键最突出),但是没有一个有效。我尝试使用 keyPress
和 keyUp
,但不知道这些函数是否存在(向那些令人惊讶的不完整文档致敬)。我是否只是在错误地使用该函数?还是其他地方出了问题?
如果我使用 npm 中的 karma-cli 运行我的测试,会有所不同。
onKeyDown
处理程序,但为了简单起见,我从原始问题中剥离了它。该处理程序寻找用户按下 Enter 和 Backspace 键,虽然该组件在页面上正常运行,但是对于此处理程序的测试却没有正常运行。 - Michael Parker