我有一些组件正在呈现已经单独测试的另一个组件(FetchNextPageButton),例如:
const News = () => (
<div>
<h1>News</h1>
...
<FetchNextPageButton query={NEWS_QUERY} path="viewer.news" />
</div>
)
const Jobs = () => (
<div>
<h1>Jobs</h1>
...
<FetchNextPageButton query={JOBS_QUERY} path="viewer.jobs" />
</div>
)
const Posts = () => (
<div>
<h1>Posts</h1>
...
<FetchNextPageButton query={POSTS_QUERY} path="viewer.posts" />
</div>
)
Run Code Online (Sandbox Code Playgroud)
问题是我不想为已经在其他地方测试过的功能在这些组件中的每一个上添加测试,所以我认为这应该足以测试组件是否已呈现并且我正在通过正确的道具。
我本来可以使用 Enzyme 轻松地进行测试,如下所示:
expect(wrapper.find('FetchNextPageButton').props()).toMatchObject({
query: NEWS_QUERY,
path: "viewer.news"
})
Run Code Online (Sandbox Code Playgroud)
所以我想知道使用React 测试库来测试它的最佳方法是什么。
我创建了一个名为 useCity 的自定义挂钩。它正在包装使用 useSWR 进行的 API 调用。
这是钩子的代码:
import useSWR from 'swr';
import { City } from '../interfaces';
import { BASE_URL } from '../../config';
interface CitiesResponse {
data?: {
records: {
fields: {
city: string;
accentcity: string;
}
}[]
},
error?: {
message: string;
}
};
interface Props {
start?: number;
rows: number;
query?: string;
sort?: 'population';
exclude?: string[];
}
const useCity = ({ start = 0, rows, query, sort, exclude }: Props) => {
const params = [`start=${start}`, `rows=${rows}`]; …
Run Code Online (Sandbox Code Playgroud)