reactjs - 我如何在 redux 中测试组件
问题描述
我在测试组件时遇到问题
import React from "react";
import { useSelector } from "react-redux";
import { PopupListWrapper, Song } from "./PopupListStyles";
const PopupList = () => {
const selectedAlbum = useSelector((state) => state.album);
return (
<PopupListWrapper data-testid="popupList-test">
{selectedAlbum.map((song) => {
const { trackName, trackTime } = song;
return (
<Song key={trackName}>
<p>{trackName}</p>
<p>{trackTime}</p>
</Song>
);
})}
</PopupListWrapper>
);
};
export default PopupList;
我想检查它是否更红,但我的内部功能仍然有问题
import { render } from "@testing-library/react";
import "@testing-library/jest-dom/extend-expect";
import configureStore from "redux-mock-store";
import { Provider } from "react-redux";
import * as reactRedux from "react-redux";
import PopupList from "./PopupList";
describe("<PopupAlbumInformation/>", () => {
const initialState = {
selectedAlbum: [],
};
const mockStore = configureStore();
let store;
const useSelectorMock = jest.spyOn(reactRedux, "useSelector");
beforeEach(() => {
useSelectorMock.mockClear();
});
it("whether the component PopupList is rendering", () => {
store = mockStore(initialState);
useSelectorMock.mockReturnValue({ initialState });
const { selectedAlbum } = initialState;
const { getByTestId } = render(
<Provider store={store}>
<PopupList>{selectedAlbum}</PopupList>
</Provider>
);
});
});
这是错误 TypeError: selectedAlbum.map is not a function
10 | return (
11 | <PopupListWrapper data-testid="popupList-test">
> 12 | {selectedAlbum.map((song) => {
| ^
13 | const { trackName, trackTime } = song;
14 | return (
15 | <Song key={trackName}>
是的,我知道我还没有断言,但由于这个问题,我不能再进一步了。有什么帮助吗?
解决方案
无需模拟或监视选择器。只需将组件包装在 redux 提供程序中,传递正确的初始状态,您就绝对是 gucci
推荐阅读
- mongodb - MongoDB:使用组计算数组
- graph - 从点之间的距离计算图
- docker - TestContainers 中的 KafkaContainer 挂起直到超时,并显示“等待容器端口打开超时”
- docker - 带有两个 Kafka 集群的 Docker-compose - 用于开发机器
- python - 如何使用 Pandas 根据数据框中另一列的值获取 2 列的总和
- python - 使用 RPC 后端获取 Celery 任务结果
- android-constraintlayout - 如何为 ConstraintLayout 中的两个项目提供单个 clicklistener?
- sql - 如何在 Snowflake SQL 中最后一次出现字符 (_) 和字符串末尾的所有数字后删除所有内容?
- javascript - 模块构建失败:错误:无法解析在引导版本配置为 v3 时必须安装的模块“bootstrap-sass”
- python - 熊猫如何在python中将同一列的所有元素相乘