我有一个测试套件,它测试一个使用上下文的组件,我只是试图测试用户何时在表单中输入一些字符/单词,并测试这些更改是否反映在输入中,onChangeEvent是我们从上下文中提取的函数。
但是当我触发Event时,这些变化不会被反映出来,测试失败了。
这就是我如何嘲笑的形式,
const renderMockForms = () =>
{
return render(
<ContextProvider>
<FormPage />
</ContextProvider>);
};
字符串
一个看起来像是
fit("Test Empty Validation when input value is invalid", async () =>
{
mockUseContext.mockReturnValue({ ...contextValues })
const { container } = renderMockForms();
await act( async () => {
const input = container.querySelector(".inputStyles");
expect(input).not.toBeNull();
console.log(input)
expect(input.value).toBe("");
fireEvent.focus(input as Element);
fireEvent.change(input as Element, { target: { value: '!@#$' } });
fireEvent.blur(input as Element);
expect(input.value).toBe('!@#$')
await new Promise(resolve => setTimeout(resolve, 10));
expect(screen.getByText("Invalid Input")).toBeTruthy();
})
})
型
我们就像这样嘲笑上下文,
jest.mock('./Context/Context.tsx', () => ({
...jest.requireActual('./Context/Context.tsx'),
useContext: jest.fn()
}))
const { useContext: mockUseContext } =
jest.requireMock('./Context/Context.tsx')
型
并且终端正在返回,
Expected: "!@#$"
Received: ""
372 | fireEvent.blur(input as Element);
373 |
> 374 | expect(input.value).toBe('!@#$')
| ^
375 |
376 | await new Promise(resolve => setTimeout(resolve, 10));
377 |
型
请帮助,花了大约3天的时间在这一点上,在这一点上,我是超过它
1条答案
按热度按时间wribegjk1#
似乎是:
字符串
导致了这个问题你能处理掉吗