【发布时间】:2020-07-29 22:43:15
【问题描述】:
我有这个组件
import React, { useEffect } from 'react';
import './App.css';
import { connect } from 'react-redux';
import { CircularProgress } from '@material-ui/core';
import { loadPhones } from './redux/actions/actions.js';
import TablePhones from './Table.js';
const mapStateToProps = (state) => state;
function mapDispatchToProps(dispatch) {
return {
loadPhones: () => {
dispatch(loadPhones());
},
};
}
export function App(props) {
useEffect(() => {
props.loadPhones();
}, []);
if (props.phones.data) {
return (
<div className="App">
<div className="introductoryNav">Phones</div>
<TablePhones phones={props.phones.data} />
</div>
);
}
return (
<div className="gridLoadingContainer">
<CircularProgress color="secondary" iconStyle="width: 1000, height:1000" />
<p className="loadingText1">Loading...</p>
</div>
);
}
export default connect(mapStateToProps, mapDispatchToProps)(App);
我写给谁
import React from 'react';
import { render } from '@testing-library/react';
import { Provider } from "react-redux";
import App from './App';
import { shallow, mount } from "enzyme";
import configureMockStore from "redux-mock-store";
const mockStore = configureMockStore();
const store = mockStore({});
describe('App comp testing', () => {
it("should render without throwing an error", () => {
const app = mount(
<Provider store={store}>
<App />
</Provider>
).dive()
expect(app.find('.introductoryNav').text()).toContain("Phones");
});
})
但是那个测试总是失败
ypeError: 无法读取未定义的属性“数据”
我也尝试将 App 导入为 {App} 并使用浅层测试,但没有运气。它给出了相同的错误,所以我无法访问上下文,我不能继续做我的测试
我该如何解决这个问题?
【问题讨论】:
-
为什么不会失败?想一想:你的商店是空的,所以没有 props.phones。
-
@jonrsharpe 是的,我想就是这样,但是我应该如何测试它呢?我要在商店里写一些模拟数据吗?
-
很可能你发现了一个错误,但如果真实的商店有一个初始值,你也需要在测试中提供它。这里没有什么神奇之处,您必须安排测试条件以匹配您在现实生活中的实际期望。
-
@jonrsharpe 没有错误,redux 获取数据并显示它。所以我真的不明白我应该做什么。
-
只需在测试中手动传递
phones = { data: 'mock' }属性...