【发布时间】:2021-03-08 11:06:19
【问题描述】:
我有一个功能组件。在组件内部,我调用了 SpecialistsListService 服务。该服务通过 Axios 调用 API。我必须测试 async function getSpecialistsList 和 useEffect 功能,但我不这样做任何人帮助我解决问题。当我使用类组件时,我只需调用 await wrapper.instance.getSpecialistsList() 之类的方法,然后检查状态,但我认为功能组件方法不同。
import React, { useState, useEffect } from "react";
import SpecialistsListService from "../../../services/specialists";
import SpecialistsPageView from "./SpecialistsPageView";
import "./index.scss";
export default function SpecialistsPage() {
const [specialistsList, setSpecialistsList] = useState([]);
const [isLoading, setIsLoading] = useState(true);
const specialistsListService = new SpecialistsListService();
useEffect(() => {
getSpecialistsList();
}, []);
async function getSpecialistsList() {
const specialistsListData = await specialistsListService.getSpecialistsList();
setSpecialistsList(specialistsListData);
setIsLoading(false);
}
return (
<SpecialistsPageView isLoading={isLoading} specialists={specialistsList} />
);
}
【问题讨论】:
-
你期待测试状态是否更新?
-
@GokulnathP 我必须测试 getSpecialistsList 函数。调用函数状态更新后检查状态更新与否。
标签: javascript reactjs frontend react-testing-library