Zha*_* Yi 22 mocha.js chai reactjs react-router enzyme
我正在使用酶+ mocha + chai来测试我的react-redux项目.酶提供浅层测试组分行为.但我没有找到测试路由器的方法.我正在使用react-router如下:
<Router history={browserHistory}>
...
<Route path="nurse/authorization" component{NurseAuthorization}/>
...
</Route>
Run Code Online (Sandbox Code Playgroud)
我想测试这条路线nurse/authorization参考NurseAuthorization组件.如何在reactjs项目中测试它?
EDIT1
我react-router用作路由器框架.
Fre*_*eez 19
您可以将路由器包装在组件中以进行测试.
Routes.jsx
export default props => (
<Router history={browserHistory}>
...
<Route path="nurse/authorization" component{NurseAuthorization}/>
...
</Route>
)
Run Code Online (Sandbox Code Playgroud)
index.js
import Routes from './Routes.jsx';
...
ReactDOM.render(<Routes />, document.getElementById('root'));
Run Code Online (Sandbox Code Playgroud)
然后,您必须浅显示Routes组件,并且您可以创建对象图以检查路径和相关组件之间的对应关系.
Routes.test.js
import { shallow } from 'enzyme';
import { Route } from 'react-router';
import Routes from './Routes.jsx';
import NurseAuthorization from './NurseAuthorization.jsx';
it('renders correct routes', () => {
const wrapper = shallow(<Routes />);
const pathMap = wrapper.find(Route).reduce((pathMap, route) => {
const routeProps = route.props();
pathMap[routeProps.path] = routeProps.component;
return pathMap;
}, {});
// { 'nurse/authorization' : NurseAuthorization, ... }
expect(pathMap['nurse/authorization']).toBe(NurseAuthorization);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19976 次 |
| 最近记录: |