【发布时间】:2015-05-19 17:46:44
【问题描述】:
我有一个渲染 <Link/> 的 React 组件。
render: function () {
var record = this.props.record;
return (
<Link to="record.detail" params={{id:record.id}}>
<div>ID: {record.id}</div>
<div>Name: {record.name}</div>
<div>Status: {record.status}</div>
</Link>
);
}
我可以轻松获得渲染后的<a/>,但我不确定如何测试 href 是否正确构建。
function mockRecordListItem(record) {
return stubRouterContext(require('./RecordListItem.jsx'), {record: record});
}
it('should handle click', function () {
let record = {id: 2, name: 'test', status: 'completed'};
var RecordListItem = mockRecordListItem(record);
let item = TestUtils.renderIntoDocument(<RecordListItem/>);
let a = TestUtils.findRenderedDOMComponentWithTag(item, 'a');
expect(a);
// TODO: inspect href?
expect(/* something */).to.equal('/records/2');
});
注意:在 React-Router v0.13.3 中,stubRouterContext 是正确模拟 <Link/> 所必需的。
编辑:
感谢Jordan 建议a.getDOMNode().getAttribute('href')。不幸的是,当我运行测试时,结果是null。我预计这与stubRouterContext 嘲笑<Link/> 的方式有关,但如何“修复”仍待定......
【问题讨论】:
-
是的。请参阅我的答案,这是公认的答案。 stackoverflow.com/a/30333190/317951
标签: javascript reactjs mocha.js react-router