【发布时间】:2018-01-11 01:24:34
【问题描述】:
我正在为高阶组件 (HOC) 中的 React 无状态功能组件 (SFC) 编写开玩笑的单元测试。如何使用 TestUtils 查找 SFC 中的特定类?
具体来说,我的 SFC/HOC 如下所示:
import React from 'react'
import sizeMe from 'react-sizeme';
const MyClass = ({myText, size}) => {
return (
<div className="MyClassName">{myText}</div>
);
};
export default sizeMe()(MyClass);
请注意,MyClass 是一个 SFC,我将它嵌入到包 react-sizeme 中的 HOC sizeMe 中。
我想做的测试是:
import React from 'react';
import ReactDOM from 'react-dom';
import TestUtils from 'react-addons-test-utils';
import MyClass from './src/views/MyClass.js'
import Wrap from '../src/views/Wrap'
describe('<MyClass />, () => {
it('can haz my text', () => {
const myClass = TestUtils.renderIntoDocument(
<Wrap>
<MyClass myText={'my text'} />
</Wrap>
);
const myText = TestUtils.findRenderedDOMComponentWithClass(myClass,'MyClassName').innerHTML;
expect(myText).toEqual('myText');
});
});
在这个测试中,我使用了我通常用来测试 SFC 的实用程序类 Wrap:
import React from 'react';
class Wrap extends React.Component {
render() {
return <div>{this.props.children}</div>
}
}
我的测试失败,因为 TestUtils.findRenderedDOMComponentWithClass 找不到 MyClass。我收到消息“没有为 class:MyClass 找到一个匹配项(找到:0)”
如何检索 MyClass?我最喜欢使用 React 的 TestUtils,但如果不可能,我愿意接受其他方法。
【问题讨论】:
标签: reactjs unit-testing jestjs