Ari*_*man 11 reactjs jestjs reactjs-testutils
在JEST for React文件中编写测试用例时,我收到此错误.以下是我的示例代码:
search_basr_test.js
jest.autoMockOff();
global.React = require('react/addons');
jest.setMock('../stores/browser_store.jsx');
beforeEach(function() {
var search_bar = require('../components/search_bar.jsx');
});
var TestUtils = React.addons.TestUtils;
describe("Test", function() {
it("should render Test", function() {
var test = TestUtils.renderIntoDocument(<search_bar/>);
expect(test).toBeDefined();
});
it("renders a list in a box with proper CSS classes", function() {
var test = TestUtils.renderIntoDocument(<search_bar/>);
let box = TestUtils.findRenderedDOMComponentWithTag(test, "div");
expect(box.className).toEqual("sidebar__collapse");
});
});
Run Code Online (Sandbox Code Playgroud)
search_bar.jsx
return (
<div>
<div
className='sidebar__collapse'
onClick={this.handleClose}
>
<span className='fa fa-angle-left'></span>
</div>
<span
className='search__clear'
onClick={this.clearFocus}
>
{'Cancel'}
</span>
}
Run Code Online (Sandbox Code Playgroud)
有谁在那里帮我解决这个问题?
小智 5
复合组件是包含React组件(不是div,span,...)的组件.方法'findRenderedDOMComponentWithTag'将参数作为复合组件.
尝试直接在你的情况下解析组件(jquery,js,...),因为它不是复合组件
小智 5
这已经很晚了,但我刚刚遇到了这个问题,我还没有找到很好的答案。
我的解决方案是在测试文件中制作一个包装组件
import { Component } from "react";
class Wrapper extends Component {
render() {
return <YourComponent {...this.props} />
}
}
Run Code Online (Sandbox Code Playgroud)
而不是打电话
TestUtils.renderIntoDocument(
<YourComponent />
);
Run Code Online (Sandbox Code Playgroud)
称呼
TestUtils.renderIntoDocument(
<Wrapper />
);
Run Code Online (Sandbox Code Playgroud)
这样做可以确保您的组件是一个复合组件,而不是一个无状态函数。
希望这对未来的其他人有所帮助!
| 归档时间: |
|
| 查看次数: |
2680 次 |
| 最近记录: |