reactjs - 对 react + redux 的开玩笑测试在道具中说未定义的值
问题描述
我正在 Jest 中测试一个使用 React 和 Redux 制作的程序,我在控制台中遇到了这个错误。
console.error
Warning: Failed prop type: The prop `prop` is marked as required in `Component`, but its value is `undefined`.
这是我为测试编写的代码:
import React from 'react';
import { Provider } from 'react-redux';
import renderer from 'react-test-renderer';
import configureStore from 'redux-mock-store';
import App from './App';
const mockStore = configureStore([]);
describe('My Connected React-Redux Component', () => {
let store;
let component;
beforeEach(() => {
store = mockStore({
prop: [],
hasErrored: false,
isLoading: false,
});
component = renderer.create(
<Provider store={store}>
<App />
</Provider>
);
});
it('should render with given state from Redux store', () => {
expect(component.toJSON()).toMatchSnapshot();
});
这就是 App.js 的样子(提供程序添加在 index.js 上)
import Component from './components/Component';
function App() {
return (
<div className="App">
<Component></Component>
</div>
);
}
export default App;
解决方案
您的App
组件呈现一个Component
组件。就是Component
抱怨它需要一个道具。您应该更新mapStateToProps
以提供prop
,或者您可以简单地执行以下操作:
import Component from './components/Component';
function App() {
return (
<div className="App">
<Component prop="foo"></Component>
</div>
);
}
export default App;
推荐阅读
- python - Alembic 无法删除 server_default
- wordpress - 是否可以使用 polylang 免费版翻译 woocommerce?
- reactjs - 如何覆盖 nav-dropdown @coreui/react
- php - AWS S3 文件上传但存储桶中的文件没有大小?
- spring-boot - Hibernate/JPA 无法将父级的 id 设置为子级的候选键
- sql - 在 Postgres 中将多列合并为一列
- hibernate - Hibernate JPA EntityManager 可能导致性能问题?
- r - 如何在R中重新生成直方图?
- ssl - Chocolatey 安装错误:请求被中止:无法创建 SSL/TLS 安全通道
- javascript - 移动设备上的自动播放视频不适用于生产