我已经解决这个问题几天了,相信我已经接近解决方案了。我正在尝试模拟在我的useEffect
useEffect(() => {
getAdminOrg();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
const getAdminOrg = () => {
const token = localStorage.getItem("token");
const URL = `organizations/organizations/`;
let config = {
headers: { Authorization: "JWT " + token }
};
axios
.get(URL, config)
.then(response => {
setOrgTitle(response.data.name);
})
.catch(error => {
if (error.response) {
console.log(error.response);
if (error.response.status === 401) {
props.renewToken();
}
}
});
};
如果setOrgTitle
钩子运行,我将能够通过更改文本字段来检测到这一点。我想在这里测试一下:
it("mocks API call", done => {
const wrapper = mount(
<OrganizationDocs />
);
const mock = new MockAdapter(axios);
mock
.onGet(`organizations/organizations/`, {
headers: { Authorization: "JWT1111" }
})
.reply(200, response.data);
setImmediate(() => {
wrapper.update();
expect(findByTestId(wrapper, "org-docs-header").text()).toContain(
organizationsOrganizations[0].name
);
done();
});
});
运行测试时,我收到未处理的承诺拒绝警告。此外,当我尝试控制台日志时,wrapper
我可以看到 API 调用没有使用我正在应用的测试标头,所以我很确定 API 调用没有使用我的模拟。
任何帮助,将不胜感激。