问题描述
我在我的测试中安装了一个 react-final-form,并且 useRef 也应该被模拟。 测试失败并显示错误“[TypeError: form.subscribe is not a function]”。 如果 React 没有被模拟,则测试通过。
我无法删除对 useRef 的嘲讽,但看起来它破坏了测试。有人知道如何修复它,或者知道解决方法吗?
import React,{ useRef } from "react";
import { Form } from "react-final-form";
export const FormComponent = () => {
const handleSubmitClick = () => console.log("submit");
const inputRef = useRef(null);
return (
<Form onSubmit={handleSubmitClick}>
{({ handleSubmit }) => (
<form onSubmit={handleSubmit}>
<input ref={inputRef} type="text" />
<button type="submit">Submit</button>
</form>
)}
</Form>
);
};
import React,{useRef} from 'react';
import { configure,mount } from "enzyme";
import Adapter from "@wojtekmaj/enzyme-adapter-react-17";
import { FormComponent } from "./FormComponent";
configure({ adapter: new Adapter() });
// I quess this cause some problem during component mounting
jest.mock("react",() => ({
...jest.requireActual("react"),useRef: jest.fn()
}));
describe("FormComponent test",() => {
it("should render form",() => {
(useRef).mockReturnValue({
current: {}
});
const form = mount(<FormComponent />);
console.log("Form",form.debug());
});
});
任何想法都会非常有帮助)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)